繁体   English   中英

将猫鼬返回结果分配给节点js变量

[英]Assign mongoose return result to node js variable

我是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变量中获得了返回结果,就可以将其直接传递给jade视图,如下所示:

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()的回调是异步的,在渲染玉器之后将执行该回调。 用户变量获得新值之前,执行跳至“ TrackSession”。

您应该将var html = ...放在回调中。

 var user = null; User.findOne({$and: [{"_id": advisorId}, {"role": "advisor"}]},{firstName:1,lastName:1, '_id':0}, function(err,userData,user) { user = userData; 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; }); }); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM