У меня есть следующая модель:
const PlaylistSchema = new mongoose.Schema({
name: String,
id: String,
offset: Number,
tracks: [Track],
});
const RoomSchema = new mongoose.Schema({
name: String,
queue: [Track],
playlist: PlaylistSchema,
users: Array,
createdBy: Object,
qrCodeId: String,
isPlaying: Boolean,
}, {
timestamps: true,
});
Но список воспроизведения не всегда существует.В одном из запросов, которые я выполняю, я хочу сбросить все состояния воспроизведения в очереди и списке воспроизведения.Но иногда список воспроизведения еще не установлен, поэтому запрос нарушает мой код.
Room.findOneAndUpdate(
{ _id: roomId },
{
$set: {
isPlaying: false,
'playlist.tracks.$[].isPlaying': false,
'queue.$[].isPlaying': false,
},
},
{
upsert: false,
new: true,
},
...
Я хочу установить только сброс значения isPlaying
дорожек в списке воспроизведения, если существует кнопка списка воспроизведения.
Я пробовал это:
Room.findOneAndUpdate(
{ _id: roomId },
{
$set: {
isPlaying: false,
'queue.$[].isPlaying': false,
},
playlist: {
$exists: true,
$set: {
'playlist.tracks.$[].isPlaying': false,
}
}
},
{
upsert: false,
new: true,
},
.... )
Но это каким-то образом удаляет список воспроизведения из объекта.
Есть ли способ, которым я могу это сделать?