Я хочу сделать вызов API через mongoose, чтобы обновить поле даты партии из выбранных Players
(схема ниже) cards
поддокумент на текущую дату.
Схема проигрывателя:
const playerSchema = new Schema({
name: String,
cards: [{
date: { type: Date, required: true },
note: String
}],
});
Я создал флажок, в котором пользователь может выбрать несколько Players
(вместе с конкретным поддокументом 'карточка' из своего массива cards
) и изменить даты, чтобы они были одинаковыми для всех этих карточек для всехвыбранный Players
.В ответ я сгруппировал соответствующие ObjectId вместе в теле и отправляю выбранные комбинации игроков / карт в массиве объектов, которые выглядят следующим образом (где число указывает на один и тот же сгруппированный поддокумент игрока и карты ObjectId):
Массив, который я отправляю на сервер (доступен через req.body.cards):
[ {cardId: card1._id, playerId: player1._id},
{cardId: card2._id, playerId: player2._id},
{cardId: card3._id, playerId: player3._id} ]
На моем маршруте Node / Express server put
, как мне обновить все эти проигрыватели?и их конкретные карты и давая им все ту же дату (Date.now ()) асинхронно?Другими словами, как бы я правильно перебрал все различные идентификаторы игроков и их соответствующие идентификаторы карт (желательно без каких-либо внешних библиотек)?
Вот как я обновляю одну карту для одного игрока в моем обычном пут-путе дляредактирование вложенного документа cards
:
Player.findById(playerId)
.then(player => {
const card = player.cards.id(cardId);
card.date = Date.now();
player.save(
(err, updatedCard) =>
err
? console.log("Error in update card: " + err)
: res.send(updatedCard)
);
})
.catch(err => res.status(404).json({ success: false }));