我正在构建一个平均堆栈应用程序。这是我控制器中的一个功能。
module.exports.postSuck = function(req, res){
var suck = new Suck(req.body, false);
console.log(req.body)
suck.save(function(err){
if(err){
console.log(err)
}
else{
console.log("saved");
}
});
Suck.find({})
.sort({date: -1})
.exec(function(err, allSucks){
if(err){
res.error(err);
} else {
res.json(allSucks);
}
console.log("found");
});
};
我登录到控制台"已保存"和"发现"当每个事件发生时。它始终打印"已保存"在"找到"即使保存功能在代码中较早。为什么会这样?我猜它与异步有关,但有人知道如何解决这个问题吗?
答案 0 :(得分:1)
您可以将.find()
函数放在.save()
函数的else语句中。这将对您有所帮助,因此.find()
函数将在.save()
函数完成时触发。使用旧代码,函数同时被调用,.find()
完成起来要快一些。
module.exports.postSuck = function(req, res){
var suck = new Suck(req.body, false);
console.log(req.body)
suck.save(function(err){
if(err){
console.log(err)
}
else{
console.log("saved");
Suck.find({})
.sort({date: -1})
.exec(function(err, allSucks){
if(err){
res.error(err);
} else {
res.json(allSucks);
}
console.log("found");
})}})};
希望这对你有所帮助!祝你好运!