回调函数发出Node.js

时间:2014-01-13 19:49:24

标签: javascript node.js mongodb

function addToServer(myid) {
    console.log("jayesh"+db.server.find({id:myid})+"\n");
    return db.server.find({id:myid});
};
addToServer(myid,function(resp) {
    console.log("something");
    if(resp.count()>0)
        console.log("present");
    else
        console.log("Nope");
});

我想知道服务器集合中是否存在id = myid的文档。我想回调有一些问题,但作为一个新手,我不太了解它。请帮帮我。谢谢

P.S对于函数我得到输出说" jayesh [object Object]"      什么都没有打印回调方法。

1 个答案:

答案 0 :(得分:2)

问题是你试图在异步环境中编写同步代码。

您需要传递回调:

function addToServer(myid, cb) {
    db.server.find({id:myid},cb);
};

addToServer(myid,function(err, resp) {
    if(err) {
      console.log("err");
    } else if(resp.count()>0) {
      console.log("present");
    } else {
      console.log("Nope");
    }
});

在异步编程中,你不能抛出而不能返回你使用回调

这些回调是常规调用,错误对象(替代throw)作为第一个参数,所有其他参数返回数据(替代return)。

Reading Material on Async Programming Practices