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);
        })
    });

Есть ли другой способ оптимизировать его?

0 ответов

Другие вопросы по тегам