函数从db返回数据

时间:2013-10-18 20:34:20

标签: node.js mongodb mongoose

我是节点js的新手,我正在为我的模型使用mongoose。

我有一个函数namde check,它有一个isNameThere函数,它接收名字字符串作为参数。它检查Db并查找名称字符串,如果用户以此名称存在,则提供该字符串this.isNameThere将返回true

var check= function()
{   

  this.nameIsThere = false;

  this.isNameThere= function(name){

  userModel.find({firstname: name},function(err,result){

                if(result)
                {
                    this.nameIsThere= true;
                }

               })

 return this.nameIsThere;  
 }
 }

即使名称存在,您猜测上面的代码将返回 false ,因为异步编程的性质。有没有办法在 userModel.find 执行后执行 return isNameThere 。或针对这种情况的任何其他解决方案谢谢大家。

1 个答案:

答案 0 :(得分:0)

小心分号,你忘记了一些。在JavaScript中,将开放括号放在函数头的旁边而不是下一行也是很好的做法。

您可以将DB调用封装在如下函数中:

function checkForName (callback) {
    userModel.find({firstname: name}, callback);
}

checkForName(function (err, result) {
    if (result) {
        nameIsThere = true;
        //do something else
        ...
    }
});

毕竟,它是非同步的,所以你不会获得任何同步返回值。

还有另一种方式:承诺。有些图书馆供您查看: