Как обновить одно поле из переданного объекта в mongoose - PullRequest
1 голос
/ 21 октября 2019

Incase У меня есть объект, похожий на приведенный ниже

const auth = {
        geohash: args.input.geohash,
        offenses: args.input.offenses,
        online: args.input.online,
        paid: args.input.paid,
        profilePic: args.input.profilePic,
        username: args.input.username,
    }

, и я передаю его по порядку для обновления документа

const update = { _id: mongoose.Types.ObjectId(args._id) }
    const value = await DiscoverUsers.findOneAndUpdate(update, auth, { useFindAndModify: false, new: true })

, поэтому в случае, если я хочу обновить только имя пользователяи я не хочу продолжать создавать мутации для обновления каждого поля в документе. допустим, моя мутация выглядит следующим образом

 mutation{
  updateDiscoverUsers(_id:"5dab7c198a83f235c89a964a",input:{username:"peter"}){
    username
  }
}

, но это только обновляет имя пользователя, но делает остальные поля пустыми, но я только хочу найти способ обновить только те поля, которые я передал в мутацииа остальные остаются прежними. поэтому я могу обновлять только имя пользователя и profilePic, а остальные остаются без изменений. Буду благодарен за помощь и заранее спасибо

1 Ответ

0 голосов
/ 22 октября 2019

Вы должны использовать атомарный оператор $set для обновления только там, где вы хотите, и вы должны передавать только те поля, которые вы хотите обновить, а не все из них, в противном случае все поля будут обновлены новым значением.

как:

const value = await DiscoverUsers.findOneAndUpdate(update, {$set:{username:"pedro"}}, { useFindAndModify: false, new: true })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...