Node.js 如何为RESTful API实现查询字符串参数
我是RESTful API的新手,我已经成功地为我的API实现了GET和DELETE命令(getlocalhost:4000/API,DELETE localhost:4000/API在Postman上运行良好) 我的get的代码如下所示:Node.js 如何为RESTful API实现查询字符串参数,node.js,rest,sorting,Node.js,Rest,Sorting,我是RESTful API的新手,我已经成功地为我的API实现了GET和DELETE命令(getlocalhost:4000/API,DELETE localhost:4000/API在Postman上运行良好) 我的get的代码如下所示: router.get('/', function(req, res) { user.find({}, function(err, users) { if(err){ res.status(404).send({
router.get('/', function(req, res) {
user.find({}, function(err, users) {
if(err){
res.status(404).send({
message: err,
data: []
});
} else {
res.status(200).send({
message: 'OK',
data: users
});
}
});
});
现在我想使用参数实现。例如,我想实现类似于排序的东西
{“名称”:1}
(1-上升;-1-下降)
将意味着按升序对名称进行排序
我不知道该怎么做:
请帮忙 我经常使用的一种很酷的解决方案是以下形式
/api/users?sort=-name |+firstname
我使用|
进行多字段排序,使用-
进行desc
,+
进行asc
简而言之:
const { sort } = req.query; // sort = '-name|+firstname';
const order = sort.split('|') // will return an array ['-name', '+firstname']
.reduce((order, item) => {
const direction = item.charAt(0) === '-' ? -1 : 1;
const field = item.substr(1);
order[field] = direction;
return order;
}, {})
// order {'name': -1, 'firstname': 1}
users.find({}).sort(order); // do your logic
您只能传递order(asc,desc),如果您想按名称排序,您可以这样做
或
然后在你的控制器里
router.get('/', function(req, res) {
let order = req.query.order;
user
.find({})
.sort({"name": order})
.exec(function(err, users) {
if(err){
res.status(404).send({
message: err,
data: []
});
} else {
res.status(200).send({
message: 'OK',
data: users
});
}
});
}))
如果您在mongodb中使用mongoose.js,这些都可以使用,非常感谢!这有帮助。您能告诉我如何返回包含“名称”字段的数据列表吗?e、 g.localhost:4000/api/users?select={“name”:1}(1代表include,0代表exclude)这是如何在数据库调用中排除字段。localhost:4000/api/users?exclude=-1像这样传递参数并从req.query.exclude中获取。然后把它穿过猫鼬