Есть вот такая вот схема:
const chat = new schema({
name: {
type: String,
required: true,
unique: true,
},
users: [{
name: {
type: String,
required: true,
unique: true,
}
}],
messages: [{
user: {
type: String,
required: true,
},
message: {
type: String,
required: true,
},
date: {
type: String,
required: true,
}
}]
}, {
versionKey: false,
collation: 'chat'
});
Есть запрос, пользователь ищет чаты, если он их находит, то он может к ним присоединиться(к 1 за раз(за запрос)).
Выглядит это примерно так:
router.post('/join', async (request, response) => {
models.chat.findOneAndUpdate({
name: request.body.data.chat.name
}, {
$push: {
users: {
name: request.body.data.user.name,
}
}
}, {
new: true,
upsert: true,
}, (error, chat) => {
if (!error){
response.json({
status: true,
body: {
chat
},
});
//console.log('Chat update! chat: ', chat);
} else {
//console.log('error: ', error);
}
});
});
Не могу понять, могу ли я как то указать, что если в массиве users уже есть объект с именем, которое приходит в запросе, то ничего делать не нужно?