Reputation: 780
I want my data sort by "createdAt" column . Sometime in ascending order and also descending order also. I am using mongo db .
Currently, I have created app which have feature like Users data can be sorted by admin request. Admin can view data in ascending order or by descending order.
I have tried option by using sort parameter which gives me data every time in same order. How can I change as admin per admin request.
Please review below that I have tried.
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});
}
});
Upvotes: 0
Views: 4350
Reputation: 1358
in my case working code below
var posts =Posts.find();
posts.sort('createdAt DESC');
posts.exec(function(err, success) {
if(err) {
res.status(500);
return res.view('500', {data: err});
}
res.json(success)
})
Upvotes: 0
Reputation: 8234
Better to use promises. Keep the code simple and easy to understand.
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)
})
For descending sort, change the sort clause to
.sort({createdAt: 0})
Upvotes: 0
Reputation: 1370
try this
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)
});
Upvotes: 2
Reputation: 780
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});
}
});
Upvotes: 0
Reputation: 487
You have to do something like this:
.sort({ createdAt: 'desc' })
In your case:
var options = {};
options[request.body.sort || "createdAt"] = 'desc'; // or 'asc'
Upvotes: 0