【问题标题】:MongoDB findOneAndUpdate doesn't return errors but also doesn't update the databaseMongoDB findOneAndUpdate 不返回错误但也不更新数据库
【发布时间】:2020-06-11 05:57:55
【问题描述】:

我正在尝试使用 findOneAndUpdate() 但似乎无法使其工作。这是我正在使用的查询。它将对象添加到嵌套在“lists”数组中的“items”数组中,用于具有“username”的特定条目。我已经为不在嵌套数组内的字段使用简单的 $set 进行了尝试,但它似乎也不起作用。目前没有返回错误。

MongoClient.connect(
      uri,
      { useUnifiedTopology: true },
      (err, db) => {
        if (err) throw err;
        var dbo = db.db("Todolist");
        dbo.collection("Users").findOneAndUpdate(
          {
            username: username,
            lists: {
              $elemMatch: {
                name: listName,
              },
            },
          },
          {
            $push: {
              "lists.$.items": {
                title: title,
                description: description,
                dueDate: dueDate,
                priority: priority,
                completed: false,
              },
            },
          }
        );
      },
      (err, doc) => {
        if (err) res.send("/addListItem failed");
        else res.send("/addListItem successful");
      }
    );
  } catch (e) {
    console.error(e);
  }

【问题讨论】:

  • 可能 listName 不匹配?你试过简单的查找查询吗
  • 有什么反应?分享示例数据模型数据?

标签: javascript node.js mongodb express mongodb-query


【解决方案1】:

您必须在此处使用.dot 符号和$ 位置运算符

Schema.findOneAndUpdate(
  { username: username },
  { "lists.$.name": listName }
)

【讨论】:

  • 你的列表也应该是对象数组。
【解决方案2】:

原来我的问题的答案是支架放置。我在 findOneAndUpdate 的函数参数关闭 ) 之后放置了回调。

【讨论】:

    猜你喜欢
    • 2018-02-13
    • 2018-07-10
    • 2021-11-20
    • 2019-04-19
    • 2020-01-13
    • 2021-12-20
    • 2020-05-29
    • 2019-03-14
    • 2016-03-23
    相关资源
    最近更新 更多