sailsjs заполняется, только если существует связанная модель
Здесь я использую sailsjs 0.11 и mongoDB для хранения данных. У меня 2 модели
1. Room.js
module.exports: {
attributes: {
messages: {
collection: 'Message',
via: 'room'
}
}
}
2. Message.js
module.exports: {
attributes: {
room: {
model: 'Room'
}
}
}
Здесь, как мы можем найти все комнаты, в которых есть хотя бы 1 сообщение. как условие, записанное в функции заполнения, отфильтрует сообщения, но покажет все комнаты. Есть какой-либо способ сделать это?
Я старался
Room.find()
.populate('messages', {limit: 1})
.exec(function(err, rooms){
if(err) return console.log(err);
if(rooms) {
return console.log(rooms); // it displays all the rooms but should display only if messages exists.
}
return res.send(404);
})
РЕДАКТИРОВАТЬ
Привет, я сделал это так.
Room.find()
.populate('messages', {limit: 1})
.exec(function(err, r){
if(err) return console.log(err);
if(!r) return res.send(404);
// removing all the rooms that does not contains message.
_.remove(r, function(room){
return room.messages.length==0;
});
Room.find({id: _.pluck(r, 'id')})
.populate('messages', {limit: 1})
.offset(page_number * 20)
.limit(20)
.exec(function(err, rooms){
if(err) return console.log(err);
if(rooms) {
return console.log(rooms);
}
return res.send(404);
})
});
Есть ли другой способ оптимизировать его?