Обновление драйвера mongodb nodejs не устанавливает новое значение - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь обновить документ пользователя mongodb.Это как показано ниже

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

Я хочу добавить одно поле 'name' к этому документу.

Мой код будет таким, как показано ниже

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, которая выдавала ошибку, поскольку документ уже существовал.

1 Ответ

0 голосов
/ 14 мая 2019

Полагаю, что я неправильно указала имя функции и раньше не создавала документ.

отправка окончательного работающего фрагмента:

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();
})();
...