Javascript 如何在mongoOp find query之外的节点js中打印结果数组?
我是Node.js的新手,我想将数据数组传递给控制器。但我无法在数组中插入for循环数据,我还想从函数外获取结果数据Javascript 如何在mongoOp find query之外的节点js中打印结果数组?,javascript,node.js,express,Javascript,Node.js,Express,我是Node.js的新手,我想将数据数组传递给控制器。但我无法在数组中插入for循环数据,我还想从函数外获取结果数据 router.get("/list-group", function(req, res) { sess = req.session; var response = {}; if (sess.loginData) { var TableData = []; var i = {}; var result = []
router.get("/list-group", function(req, res) {
sess = req.session;
var response = {};
if (sess.loginData) {
var TableData = [];
var i = {};
var result = [];
mongoOp.users_group.find({
group_id: req.query.group_id
}, function(e, d) {
var len = d[0].assign_user_id.length;
var assignuserid = d[0].assign_user_id;
for (var i = 0; i < assignuserid.length; i++) {
var assignid = assignuserid[i];
mongoOp.users.find({
_id: assignid
}, function(err, data) {
// This is result array
result[i] = data;
})
}
// And I want to print result array here
console.log(result);
});
} else {
response = {
"error": true,
"message": "Invalid Login"
};
res.json(response);
}
})
router.get(“/list group”),函数(req,res){
sess=请求会话;
var响应={};
如果(sess.loginda){
var TableData=[];
var i={};
var结果=[];
mongoOp.users\u group.find({
组id:req.query.group\u id
},功能(e,d){
var len=d[0]。分配用户id.length;
var assignuserid=d[0]。分配用户id;
对于(var i=0;i
您需要了解javascript中的异步和回调。另一种选择是阅读async和await。我会使用async
和await
router.get('route', (req, res) => {
// ...
users.find(query, (err, d) => {
try {
// ...
var results = []
for (var data of array) {
const result = await fetchUser(data)
results.push(result)
}
console.log(results)
} catch (err) {
console.log('some error occured', err)
}
})
})
async function fetchUser(id) {
return new Promise((resolve, reject) => {
users.find({ _id: id }, (err, data) => {
return err ? reject(err) : resolve(data)
})
})
}
如果您对
async
和wait
不太熟悉,我建议阅读可能会有帮助。首先,您需要一个闭包。另外,您是否希望对I
的不同值按顺序或异步进行工作?