Добавление нового атрибута в существующий документ с помощью mongoose

1

Я пытаюсь обновить существующий документ, чтобы добавить новый атрибут с помощью js.

User.findOne({ name: req.body.user.name }).exec((err, user) => {
    // Handle database errors
    if (err) {
        res.status(500).send(err);
    } else {
        user['name'] = req.body.user.name;
        user['mail'] = req.body.user.mail;
        user['apikey'] = req.body.user.apiKey;
        console.log('ApiKey: ' + req.body.user.apiKey);
        console.log('User: ' + user   );
        user.save((err, saved) => {
            if (err) {
              console.log("error");
              res.status(500).send(err)
            }
            res.json({ user: saved });
        });
    }
});

Но кажется, что я не могу добавить новую базу в журналы. Новый Это не обязательное поле. Это моя модель:

const userSchema = new Schema({
    name: { type: 'String', required: true },
    mail: { type: 'String', required: true },
    password: { type: 'String', required: true },
    apiKey: { type: 'String', required: false }
});

let User = mongoose.model('User', userSchema);

Я только начинаю работать с mongoDB, используя mongoose, поэтому у меня есть много основных вещей.

  • 0
    Вы имеете в виду, что вы не можете обновить документ?
  • 0
    Я могу обновить все существующие поля. Но я не могу добавить новый (в данном случае «apikey»).
Показать ещё 3 комментария
Теги:
mongoose
crud

1 ответ

0

Вместо findOne и save вы можете напрямую использовать запрос findOneAndUpdate

User.findOneAndUpdate(
  { "name": req.body.user.name },
  { "$set": req.body.user },
  { "new": true }
)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню