用Mongoose保存和查找

时间:2016-08-27 20:58:16

标签: node.js mongodb mongoose mean-stack

我正在构建一个平均堆栈应用程序。这是我控制器中的一个功能。

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");
});

};

我登录到控制台"已保存"和"发现"当每个事件发生时。它始终打印"已保存"在"找到"即使保存功能在代码中较早。为什么会这样?我猜它与异步有关,但有人知道如何解决这个问题吗?

1 个答案:

答案 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");
                })}})};

希望这对你有所帮助!祝你好运!