使用 Mongoose 保存和查找

Save and Find with Mongoose

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

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

};

我会在每个事件发生时登录到控制台 "saved" 和 "found"。它总是在 "found" 之后打印 "saved",即使保存函数在代码的前面。为什么会这样?我猜这与异步有关,但有人知道如何解决这个问题吗?

您可以将 .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");
                })}})};

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