Пн goose совершить частичную транзакцию внутри карты массивов - PullRequest
1 голос
/ 01 апреля 2020

Можно ли как-то обновить значение одного объекта в массиве, не зная предыдущего значения второго элемента?

user.set(`history.${day}`, [{ morning: price }]);

Я хочу обновить только утреннюю цену, не зная точно, что значение дня:

Изображение документа до запуска строки выше: до и после

Как вы можете видеть, глядя на после рисунка второй объект в 3-м массиве был удален после обновления цены с 50 до 100, есть ли вообще возможность совершать частичные транзакции?

Схема модели:

const subSchema = mongoose.Schema({
  morning: Number, afternoon: Number
},{_id: false});

const UserSchema = mongoose.Schema(
  {
    username: String,
    price: Number,
    history: { type: Map, of: [subSchema] }
  }
);

Спасибо

1 Ответ

0 голосов
/ 01 апреля 2020

Если вы хотите сохранить свою схему в том виде, в каком она есть, вам нужно указать полный путь к значению, которое вы хотите изменить:

user.set(`history.${day}.${index}.morning`,  price);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...