首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何迭代JSON数组并从异步箭头函数中添加数据?

如何迭代JSON数组并从异步箭头函数中添加数据?
EN

Stack Overflow用户
提问于 2020-08-09 20:01:22
回答 1查看 151关注 0票数 0

我是新来的,不管是普通的还是JS的。我想要完成的是调整来自DB的响应,添加另一个字段。我有一种猫鼬的方法,它给我提供了所有现存的课程,我想在这些信息中添加每一个课程的所有铭文。所以我在尝试这个:

代码语言:javascript
复制
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 :/");
    } 
};

我的courseAdapter

代码语言:javascript
复制
exports.apply = (courses) => {
    return courses.map(async course=> (
        {
            ...course._doc,
            number: await coursetUtils.getNumberOfInscriptions(course._doc._id)
        }
    ));
}

我的courseUtils:

代码语言:javascript
复制
exports.getNumberOfInscriptions = async courseId => {
       return await CourseInscription.countDocuments({courseId: courseId});
}

我认为我的问题在于async-await函数,因为有了这段代码,我得到了以下内容:

代码语言:javascript
复制
{"courses":[
  {},
  {}
]}

或者改变一些东西我得到这个:

代码语言:javascript
复制
{"courses":[
  {"courseInfo":{...},
   "number":{}
  },
  {"courseInfo":{...},
   "number":{}
  }
]}

但从来没有多少铭文上的回应。顺便说一下,我在代码的其他部分使用函数getNumberOfInscriptions()进行验证和工作。

EN

回答 1

Stack Overflow用户

发布于 2020-08-09 23:14:08

我尝试了很多方法:我改变了我在应用函数中处理来自DB的数据的方式,我把它当作数组来对待。

代码语言:javascript
复制
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;
}

我认为这不是一个很好的方式来完成我的目标,但它是有效的。如果我发现更好的东西,性能或清洁,我会张贴。

无论如何,当我调用我的map函数时,我仍然不知道我以前的async-await函数做错了什么。如果有人知道,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63330784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档