2014-10-26 2 views
0

Я хочу, чтобы мои данные сортировались по столбцу "createdAt". Иногда в порядке возрастания, а также по убыванию. Я использую mongo db.Как я могу сортировать данные в порядке убывания с помощью sails-js?

В настоящее время я создал приложение, которое имеет такую ​​функцию, как данные пользователя, может быть отсортировано по запросу администратора. Администратор может просматривать данные в порядке возрастания или по убыванию.

Я пробовал вариант с помощью параметра сортировки, который дает мне данные каждый раз в одном порядке. Как я могу изменить администратор на запрос администратора.

Пожалуйста, просмотрите ниже, что я пробовал.

var options = { 
    limit: request.body.limit || undefined, 
    skip: request.body.skip || undefined, 
    sort: request.body.sort || "createdAt", 
    where: request.body.where || undefined 
}; 

Users.find(options, function (err, Users) { 
    if (Users === undefined) { 
     return response.json({message: "No data Found"}); 
    } 
    else if (err) { 
     return response.json({message: err}); 
    } else { 
     return response.json({data: Users}); 
    } 
}); 

ответ

0

Вы должны сделать что-то вроде этого:

.sort({ createdAt: 'desc' }) 

В вашем случае:

var options = {}; 
options[request.body.sort || "createdAt"] = 'desc'; // or 'asc'  
+0

не работает в парусах JS. –

0
var options = { 
    limit: request.body.limit || undefined, 
    skip: request.body.skip || undefined, 
    sort: request.body.sort || "createdAt desc", // Please mention here, desc or asc followed by space with  column name 
    where: request.body.where || undefined 
}; 

Users.find(options, function (err, Users) { 
    if (Users === undefined) { 
     return response.json({message: "No data Found"}); 
    } 
    else if (err) { 
     return response.json({message: err}); 
    } else { 
     return response.json({data: Users}); 
    } 
}); 
1

попробовать этот

var myQuery = Users.find(options); 

// if you want to sort in descending order 
myQuery.sort('createdAt DESC'); 

// if you want to sort in ascending order 
myQuery.sort('createdAt ASC') 

myQuery.exec(function callBack(err,results){ 
    console.log(results) 
}); 
0

Лучше использовать обещания. Держите код простым и понятным.

let condition = { 
    someField: 'value', 
    someOtherField: 'value' 
} 

let limit = 10; 
let skip = 10; 

Users.find(condition) 
.limit(limit) 
.skip(skip) 
.sort({createdAt: 1}) 
.then(result => { 
    // do whatever you need to do with the result here 
    console.log(result) 
}) 

Для сортировки по убыванию, изменить положение сортировки для

.sort({createdAt: 0}) 
Смежные вопросы