gpt4 book ai didi

javascript - Mongoose Promise 不将数据传递到下一个链

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:59 25 4
gpt4 key购买 nike

我正在使用带有 Promise 的 mongoose 查询 MongoDB。结果只能在第一个 .then(function(results){//can send the result from here..}) 中访问。但是,当我操作结果并将其传递到下一个 .then() 链时,它无法访问。以下是完整功能。

exports.getAcl = function(req, res) {

User.findAsync({}, {
acl: 1
})
.then(function(results){
var aclList = [];
results.forEach(function(result,index,arr){
aclList[result._id] = result;
if (index === (arr.length - 1)) {
console.log('I can log the aclList here..', aclList)
return aclList // But neither able to send it to next chain nor to front end res.send(aclList)
}
})
})
.then(function(aclList){
console.log(aclList) // Loging undefined
res.status(200).json(aclList); // undefined
})
.catch(handleError(res));
}

请让我知道我在这里做错了什么......谢谢

最佳答案

而不是

results.forEach(function(result,index,arr){
aclList[result._id] = result;
if (index === (arr.length - 1)) {
console.log('I can log the aclList here..', aclList)
return aclList // But neither able to send it to next chain nor to front end res.send(aclList)
}
})

尝试

var resArray = [];
results.forEach(function(result,index){
aclList[result._id] = result;
if (index === (arr.length - 1)) {
newRes.push(aclList);
}
})
// console.log(resArray) to verify they are there
return resArray;

底线:不要为每个函数使用多个返回值(如 forEach)。

关于javascript - Mongoose Promise 不将数据传递到下一个链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33898807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com