我正在開發一個應用程序express.js和mongodb。 我想做以下任務。 如果數據庫可用,那麼我想獲取所有其他的帖子,它會拋出一個錯誤..我使用Q包承諾。我不知道如何使下面的代碼工作..如果有任何其他方式來實現這一點,然後幫助我。如何使用承諾(Q包)實現此目標?
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;
}
這裏是我的路線本地主機代碼:3000 /職位
exports.posts = function(req,res){
postModel.getAllPosts().then(function(data){
res.send(data);
}).fail(function(err){
res.send('error');
});
}
這裏是我的MongoDB的連接代碼
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;
}
*話題*:有沒有專門使用'的要求Q'。如果沒有,只需使用節點v0.12和'--harmony'標誌來使用promise。 –
第一眼看起來代碼是好的。你有什麼樣的錯誤? –
@SimoEndre當mongodb沒有連接時,我可以得到錯誤信息。但是,當我啓動MongoDB並切換到URL本地主機:3000 /職位(這是假設返回所有帖子),它不是返回數據..它只是繼續加載... – kishan