【发布时间】:2015-12-10 06:16:03
【问题描述】:
我是 node js 和 mongoose 的新手。我在 node js 中有以下代码。我想将猫鼬返回的userData 记录分配给回调之外的变量user。
var user = null;
User.findOne({$and: [{"_id": advisorId}, {"role": "advisor"}]}, {firstName:1,lastName:1, '_id':0},
function(err,userData) {
user = userData;
});
一旦我在user 变量中得到返回结果,我可以直接将它传递给玉视图,如下所示:
TrackSession.find({'advisor_id' : advisorId},fields,function(err, chatHistoryData) {
var jade = require('jade');
var html = jade.renderFile(appRoot+'/views/generatePDFHTML.jade', {'chatHistoryData': chatHistoryData,
'selectedOptions':selectedOptions,
'advisor':user,
'tableHeaders':tableHeaders
});
console.log(html); return false;
});
但是当我尝试这样做时,我得到null 作为user 变量的值。有没有具体的解决方案来实现这一点?
【问题讨论】:
-
为什么不把渲染代码放在 findOne() 回调中?
-
为什么将“用户”传递给回调?我认为您在更高范围内隐藏“用户”。
-
Opps 是错误的,你现在可以检查一下我已经编辑了问题。
-
@SarathNair:我已经编辑了问题,您可以再次检查代码吗?实际上,我想要包含用户详细信息的数据。不幸的是,它不支持关系映射,我怎么能通过 advisorId 获取用户的数据。
-
在您编辑的版本中,“TrackSession”的 find() 回调有可能在“User”的 findOne() 回调之后执行,并且渲染将按预期工作。但它仍然不稳定,有时可能无法正常工作。您应该将 TrackSession 放在 findOne() 回调中,这是肯定的。
标签: javascript node.js mongodb express