Есть схема сообщений, в которой хранятся все сообщения от пользователей.
У каждого пользователя есть массив диалогов (переписок), в каждом из которых хранятся id сообщений. В схеме выглядит следующим образом:
dialogues: [{
name: mongoose.Schema.Types.ObjectId, // contain order id
messages: [{
id: {
type: mongoose.Schema.Types.ObjectId
}, // contain message id
properties: {
hidden: {
type: Boolean,
default: false
},
new: {
type: Boolean,
default: true
}
}
}]
}]
Когда сообщение записывается к общим сообщениям, вызывается функция для отправителя и получателя, которая записывает в их переписки, id этого сообщения. Вот функция:
function insertUserMessages(userId, dialogTitle, message) {
User.findById(userId, function(err, user) {
User.update(
{dialogues: { $elemMatch: { name: dialogTitle } } },
{ $push: { "dialogues.messages": message } },
{ safe: true, upsert: true },
function(err, result) {
if (err) console.log(err);
}
);
});
}
Вопрос: как правильно осуществить запись?