如何使用forEach遍历数组并更新Mongoose中的元素

时间:2019-10-22 00:36:07

标签: javascript node.js mongodb mongoose

我的用户模型具有以下形状:

{
name: "Some User",
events: [{title: "String", count: 1}]
}

每次用户加载我的应用程序时,我都希望遍历每个数组并执行计算。为简单起见,在此代码段中,我尝试将计数值设置为10000。但是,出现此错误:

user.events.updateOne不是函数。

这是我的端点代码:

        user.events.forEach((e, i) => {
          user.events.updateOne(
            { _id: e._id.toString() },
            { $set: { count: 10000 } }
          );
        });
      });

我在做什么错了?

2 个答案:

答案 0 :(得分:0)

events对象的user属性是一个数组。而且您的数组没有这样的功能upadteOne()。如果要修改事件,可以在事件上使用map函数来更改其值。例如:

user.events.map((event) => {
    // we change something in the event.
    event.title +=  "?"
    event.count = 10000
    // we are returning the updated event, so it can be modified in the original array
    return event;
});
// now that each event has been modified, we can save the user.
user.updateOne();

答案 1 :(得分:0)

user.events.map((event) => {
    event.title =  event.title;
    event.count = 10000
    return event;
});

user.update({_id: user._id }, { $set: { events: user.events });