Я работаю над простой службой чата с использованием mongoose и nodejs.Объединение нескольких коллекций на уровне приложений с помощью Mongoose
У меня есть две модели для обмена сообщениями для чтения информации;
var ChatModel = new Schema({
to: String,
from: String,
message: String,
time: {type: Date, default: Date.now}
});
var InfoModel = new Schema({
reader: String,
from: String,
time: {type: Date, default: Date.now}
});
Когда кто-то (читатель) проверяет его/ее входящие сообщения от кого-то другого (с) я просто поставил рекорд по InfoModel.
Я хочу найти отдельных отправителей, которые отправили сообщения (скажем) T1 с информацией о чтении.
Chat.distinct('from', {to: 'T1'})
.then(
function (data) {
res.json(data);
})
имея найти различные отправители мне как-то нужно перебрать отправитель и получать последние времена сообщений для каждого из них. Вот то, что я пытался сделать, но не получилось
Chat.distinct('from', {to: 'T1'})
.then(
function (data) {
for (var i = 0; i < data.length; i++) {
Chat.findOne({from: data[i], to:'T1'}, 'time', {sort: {'time': -1}})
.then(function(d){
... I need to fetch from InfoModel and compare the dates for read/unread information
}
)
}
res.json(result);
})
но, очевидно, этот подход не работает, как нужно все записи пришли из findOne готовы и получить информацию от InfoModel.
Ну, просто мне нужно что-то синхронизировать, или я должен думать асинхронно, не знаю, как это сделать.