【问题标题】:Update a single element in an array in MongoDB using NodeJS without knowing the index [duplicate]使用NodeJS在不知道索引的情况下更新MongoDB中数组中的单个元素[重复]
【发布时间】:2019-05-13 21:39:08
【问题描述】:

在我的数据库中,我有这样的东西:

 "_id" : ObjectId("5c0d9d54df58cb2fdc7f735a"),
"notificationMessages" : [ 
    {
        "message" : "Some message 1",
        "showNotification" : true,
        "projectId" : "5c0e40683500fe72a8e3ce8f"
    }, 
    {
        "message" : "Some message 2",
        "showNotification" : true,
        "projectId" : "5c0e6e113500fe72a8e3ce90"
    }
],

单击客户端上的具体消息时,我想将“showNotification”更新为 false。为此,我将我从客户端单击的数组的索引发送到 nodejs 服务器,并尝试将该结果用作我的更新查询的索引,但它不起作用。首先我尝试这样做:

  exports.delete_notification = async function(req,res) {

  let  arrayIndex = req.body.index;
console.log("This is the arrayIndex")
console.log(arrayIndex)


await User.update(
  {_id: req.session.userId},
  {$set: {'notificationMessages.' + arrayIndex + '.showNotification': false }}
)


res.status(200).json("done")

}

但是,似乎在更新查询中不允许使用加号: (忽略 console.log(theString),theString 不存在我知道,但这不是问题。)

所以我尝试做这个查询

await User.update(
  {_id: req.session.userId},
  {$set: {'notificationMessages.arrayIndex.showNotification': false }}
)

然而,这会导致以下错误:

(node:20656) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): MongoError: Cannot create field 'arrayIndex' in element {notificationMessages: [ { message: (....)

谁能帮助我正确更新从客户端收到的索引?

【问题讨论】:

  • 查看链接的欺骗。 {$set: {['notificationMessages.' + arrayIndex + '.showNotification']: false }}
  • 谢谢。不知道我怎么没找到那个帖子,但它解决了我的问题

标签: node.js database mongodb


【解决方案1】:

数组索引可以通过括号表示法访问。

await User.update(
  {_id: req.session.userId},
  {$set: { notificationMessages[arrayIndex].showNotification: false }}
)

尝试不使用单引号。如果它不起作用,您也可以尝试将其作为模板字符串,如下所示:

await User.update(
  {_id: req.session.userId},
  {$set: { `notificationMessages[${arrayIndex}].showNotification`: false }}
)

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2018-06-09
    • 2017-03-05
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2019-08-13
    • 2021-06-02
    相关资源
    最近更新 更多