![](/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.