簡體   English   中英

mongodb nodejs驅動程序updateOne未設置新值

[英]mongodb nodejs driver updateOne doesn't set a new value

我正在嘗試更新mongodb用戶文檔。 如下

{
  "_id":"123",
  "email":"sam@example.com"
}

我想在此文檔中添加一個字段“名稱”。

我的代碼如下

async function test() {
    const user = {"_id":"123", "email" : "sam@example.com" };
    async function setUsername(user, update) {
      await userCollection.updateOne(user, update);
    }
    await setUsername(user, { $set: { name: "sam"} });
}
test();

但是,當我在數據庫中看到時,看不到文檔中設置的字段。

我確定我某種程度上缺少節點驅動程序的實現方式,但是我不確定這個問題。

我什至嘗試使用upsert:true選項,因為該文檔已存在,這給了我一個錯誤。

我想我給函數名稱指定了錯誤,並且我之前沒有創建文檔。

發布有效的最終代碼段:

const { MongoClient } = require("mongodb");
async function test() {
    const mclient = await MongoClient.connect("mongodb://localhost:27017/?w=1", {
      useNewUrlParser: true
    });
    const db = mclient.db("test");
    const userCollection = db.collection("user");
    const user = { _id: "123", email: "sam@example.com" };
    function setUsername(user, update) {
      return userCollection.updateOne(user, update);
    }
    await setUsername(user, { $set: { name: "sam" } });
}
(async () => {
   test();
})();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM