我从来没有进入回调函数,nodejs就停止了

时间:2016-05-24 20:39:00

标签: node.js asynchronous

我总是将nodejs与express一起使用,但现在我尝试在nodejs中运行以下脚本(只需在终端中调用"节点myscript.js")

postModel是一个猫鼬模型,在mongodb上进行查询。

'use strict'
var postModel = require(__dirname + '/../model/post').postModel;
myfunction();
function myfunction() {
    console.log("before call");
    postModel
        .find({isArchived: false})
        .exec(function(err,result){
            console.log("result is ok")
        })
};

所以我不明白为什么我从来没有看到"结果没问题"在我的终端。

我也尝试使用async和wait.for库,但是我的脚本在执行异步函数之前停止并返回结果。

我想我只是想念我正在做的事情,但不知道是什么......

1 个答案:

答案 0 :(得分:1)

您需要调用mongoose.connect()来实际连接到数据库。

否则,Mongoose将在内部对您的查询进行排队,并在发出查询之前等待连接。但是,由于该连接永远不会出现(因为mongoose.connect()没有被调用),所以永远不会处理队列,永远不会发出查询,因此永远不会调用它的回调。