![](/img/trans.png)
[英]How to add data from array/Object to the HTML drop down menu using JSON and Fetch/Async Await
[英]How to iterate a JSON array and add data from an async arrow function?
我是 MEAN 堆栈和 JS 的新手。 我想要完成的是调整我从数据库中获得的响应,添加另一个字段。 我有一个 mongoose 方法,它为我提供了所有存在的课程,我想将每个课程的所有铭文添加到该信息中。 所以我正在尝试这个:
exports.getAllCourses = async(req, res) => {
try {
const rawCourses = await Course.find();
const courses = await courseAdapter.apply(rawCourses)
await res.json({courses});
} catch (error) {
console.log(error);
res.status(500).send("Ocurrio un error imprevisto :/");
}
};
我的课程适配器
exports.apply = (courses) => {
return courses.map(async course=> (
{
...course._doc,
number: await coursetUtils.getNumberOfInscriptions(course._doc._id)
}
));
}
还有我的课程Utils:
exports.getNumberOfInscriptions = async courseId => {
return await CourseInscription.countDocuments({courseId: courseId});
}
我认为我的问题在于async-await
function 因为使用此代码我得到了这个:
{"courses":[
{},
{}
]}
或改变一些东西我得到这个:
{"courses":[
{"courseInfo":{...},
"number":{}
},
{"courseInfo":{...},
"number":{}
}
]}
但从来没有数过题字上的反应。 顺便说一句,我在代码的其他部分使用 function getNumberOfInscriptions()进行验证和工作。
尝试了很多东西我得到了这个:我改变了我在应用function 中处理来自 DB 的数据的方式,并将它视为一个数组。
exports.apply = async (courses) => {
var response = [];
for (let c of courses) {
var doc = c._doc;
var tmp = [{course: doc, inscriptionNumber: await courseUtils.getNumberOfInscriptions(c._doc._id)}];
response = response.concat(tmp);
}
return response;
}
我认为这不是实现我的目标的好方法,但它确实有效。 如果我发现更好的东西,性能或清洁,我会发布。
无论如何,当我调用我的async-await
function 时,我仍然不知道我之前map
function 做错了什么。 如果有人知道,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.