i developing app express.js , mongodb. want following task. if database available want fetch posts else throw error.. using q package promise. not sure how can make following code work.. if there other way achieve me out.
function getallposts(){ var deferred = q.defer(); db.connectdb().then(function(){ db.posts.find({},function(err,data){ if(err){ deferred.reject(new error('problem')); }else{ deferred.resolve(data); } }); }).fail(function(err){ console.log(err); }); return deferred.promise; } here code route localhost:3000/posts
exports.posts = function(req,res){ postmodel.getallposts().then(function(data){ res.send(data); }).fail(function(err){ res.send('error'); }); } here mongodb connection code
function connectdb(){ mongoose.connect('mongodb://localhost/demo'); var deferred = q.defer(); mongoose.connection.on('open',function(){ createtables(); deferred.resolve(); }); mongoose.connection.on('error',function(){ deferred.reject(new error('error connecting database')); }); return deferred.promise; }
i think problem in connection method, because not instantiating deferred object capital letter q.
you should use
var deferred = q.defer(); instead of
var deferred = q.defer(); so connection method should like:
function connectdb(){ mongoose.connect('mongodb://localhost/demo'); var deferred = q.defer(); // q capital letter mongoose.connection.on('open',function(){ createtables(); deferred.resolve(); }); mongoose.connection.on('error',function(){ deferred.reject(new error('error connecting database')); }); return deferred.promise; }
Comments
Post a Comment