Javascript 使用承诺从mongo db检索对象时出错

Javascript 使用承诺从mongo db检索对象时出错,javascript,node.js,q,Javascript,Node.js,Q,各位, 我试图用承诺来包装以下内容,并返回一个Mongo文档 控制器的捕获正在获取错误:“TypeError:无法调用未定义的方法'apply\” 将对象从db返回控制器的正确方法是什么 控制器: Q.fcall(Users.fetchId(authId)).then(function userVerification(userObject) { console.log ('got back',userObject); responses.Unauthorized('Unauth

各位, 我试图用承诺来包装以下内容,并返回一个Mongo文档

控制器的捕获正在获取
错误:“TypeError:无法调用未定义的方法'apply\”

将对象从db返回控制器的正确方法是什么

控制器:

Q.fcall(Users.fetchId(authId)).then(function userVerification(userObject) {
    console.log ('got back',userObject);
    responses.Unauthorized('Unauthorized ID', res);
}).catch(function handleError(err) {
    responses.InternalServerError(''+err, res);
});
用户模型:

Users.prototype.fetchId = function fetchId(authId) {
    return this.mongodb.fetchId(authId);
};
蒙戈:

MongoDatabase.prototype.fetchId = function fetchId(id) {
    var result = {}
    return this.authDB.query('users', function(collection) {
        return collection.findOne({_id:id}, function (err, doc) {
            if (!_.isEmpty(doc)) {
                var result = doc;
            }
            console.log ('mongo',result);
            return result;
        });
    });
};

Q.fcall
将函数作为其第一个参数,然后将参数应用于该函数。通过向它传递
Users.fetchId(authId)
,就是向它传递调用该函数的结果

尝试传递函数,然后传递要应用于该函数的参数:

Q.fcall(Users.fetchId, authId).then( fn )

嗯,现在mongo再也没有接到电话了。用户使用
{error:'TypeError:cannotreadproperty'mongodb\'of undefined'}