gpt4 book ai didi

javascript - Node : res. 发送数组不起作用

转载 作者:行者123 更新时间:2023-12-03 02:10:10 25 4
gpt4 key购买 nike

我的用户模型有一个数组类型的字段,其值如下

"courseId" : [
"5ac1fe64cfdda22c9c27f264",
"5ac207d5794f2910a04cc9fa",
"5ac207d5794f2910a04cc9fa"
]

我的路由是这样配置的:

router.get('/:userid/vendor-dashboard', function (req, res) {
var courseID = [];
User.findById(req.params.userid, function (err, doc) {
if (err) {
res.send(err);
} else {
for (var i = 0; i < doc.courseId.length; i++) {
Course.findById(doc.courseId[i], function (err, course) {
if (err) {
console.log(err);
} else {
console.log(course.title);
courseID.push(course.title);
}
})
}
res.send(JSON.stringify(courseID));
}
})
})

首先我要查找一个用户,当找到用户时,他应该找到数组中的所有类(class)并显示其标题。

现在,我可以在控制台中获取标题,但是当我尝试通过 res.send 发送它时,它显示一个空数组。

我做错了什么?

最佳答案

主要问题是您在从类(class)模型获取响应之前发送响应。

使用回调的正确方法是:

router.get('/:userid/vendor-dashboard', function(req, res) {
var courseID = [];
User.findById(req.params.userid, function(err, doc) {
if (err) {
return res.send(err);
}

var resolved = 0;
for (var i = 0; i < doc.courseId.length; i++) {
Course.findById(doc.courseId[i], function(err, course) {
if (err) {
return console.log(err);
}

courseID.push(course.title);

if (++resolved === doc.courseId.length) {
res.send(JSON.stringify(courseID));
}
})
}
})
})

关于javascript - Node : res. 发送数组不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49612136/

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