Sails js - ограничение ORM по ватерлинии или сортировка по группе?

Я использую Waterline ORM для Sailes.js. limit и sort не работают, когда вы используете groupby, но работают нормально, когда вы не группируете.

Например

Model.find({
    groupBy:['term'],
    sum:['count'],
    limit:20,
    sort :'count DESC'}).exec(function(error,response){
        if(error) res.json(error);
        res.json(response);
    });

person sanath_p    schedule 02.07.2014    source источник


Ответы (4)


Использовать

Model.find()  
 .groupBy('term') 
 .sum('count')  
 .limit(20)
 .sort({count: 'desc'}) 
 .exec(function (err, data){
 //Your code here..
});
person Adil Malik    schedule 03.07.2014
comment
Используйте sort перед groupBy.. Может быть, это сработает.. Я надеюсь, что вышеупомянутый метод не дает никаких ошибок..? - person Adil Malik; 03.07.2014
comment
пробовал и тот. Ваш метод не дает никаких ошибок, он просто отображает все результаты. - person sanath_p; 03.07.2014
comment
Это означает, что вы не применяете правильные фильтры. Не могли бы вы обновить свой вопрос, указав файлы модели и контроллера.. т.е. api/models/Foo.js и api/controller/whateverController.js - person Adil Malik; 03.07.2014
comment
Попробуйте заменить 'asc'/'desc' на 1/-1, таким образом: .sort({count: -1}). - person Karma; 28.06.2015
comment
есть ли в парусах метод toSql, чтобы увидеть наш запрос? - person Faris Rayhan; 20.11.2016
comment
Предложение groupBy больше не поддерживается в Sails/Waterline. использование изменилось. Теперь, чтобы выполнять агрегированные запросы с помощью оператора groupBy, вместо этого используйте собственный запрос. Отладчик Sailsjs сказал - person Wajih; 03.11.2018

Пример переопределения в JSON

    // Your Model
    module.exports = {
        attributes: {
            // some attributes here
            name: 'string',
            email: 'string',
            password: 'string',

            // Override .toJSON instance method
            toJSON: function() {
                var obj = this.toObject();
                delete obj.password;
                return obj;
           }
        }
    };
person Ashish Gupta    schedule 22.01.2018

Используйте это:

  Model.find()  
   .sort({count: 'desc'}) 
   .groupBy('term') 
   .exec(function (err, data){
   //Your code here..
  });
person Ashish Gupta    schedule 31.01.2018

В Sails-Mongo для сортировки ASC и DESC мы можем использовать то же самое, что и mongo. Например, если вы хотите получить количество в порядке DESC, тогда запрос будет таким:

Model.find({
 sort: {
    count: 0(Note:- Here 0 for DESC and 1 for ASC)
  }
})

Надеюсь, это сработает для вас.

person Akib Deraiya    schedule 25.05.2018