我已成功为我的API实现了GET和DELETE方法(GET localhost:4000 / users / api,DELETE localhost:4000 / users / api on Postman工作正常)。
我现在要实现的是指定对每个特定字段进行排序的顺序,其中1为升序,-1为降序。例如,
如果我使用localhost:4000 / api / users?sort = {fieldName:1}
这将返回按' fieldName'。
排序的用户列表到目前为止,我所做的是:
router.get('/', function(req, res) {
let obj = JSON.parse(req.query.sort)
user
.find({})
.sort(obj)
.exec(function(err, users) {
if(err){
res.status(404).send({
message: err,
data: []
});
} else {
res.status(200).send({
message: 'OK',
data: users
});
}
});
});
这适用于正常排序,但我想知道如何使用-1和1指定升序和降序。
编辑:
router.get('/', function(req, res) {
var count = req.query.count;
var sorting = req.query.sort;
//let obj = JSON.parse(sorting)
let obj = {}
obj[fieldname] = req.query.sort.fieldName == '1' ? 1:-1
if(sorting != null) {
user
.find({})
.sort(obj)
.exec(function(err, users) {
if(err){
res.status(404).send({
message: err,
data: []
});
} else {
res.status(200).send({
message: 'OK sorted',
data: users
});
}
});
}
});
答案 0 :(得分:1)
您必须将1和-1从字符串更改为数字。 你可以得到这样的查询“localhost:4000 / api / users?sort [fieldName] = 1” 然后在代码中定义obj,如
let obj = {}
obj['fieldName'] = req.query.sort.fieldName == '1' ? 1:-1
然后将obj传递给find中的sort部分。