Node.js 如何使用params使用Sailsjs筛选数据库对象
一般来说,我对Node还是有点陌生,所以如果这是noob问题,我很抱歉。我的设置是Sailsjs+MongoDB 我设置了一个RESTful API控制器来处理数据库中的“lab”集合 以下是当使用/lab/时,我在控制器中用来拉起此集合中所有对象的内容:Node.js 如何使用params使用Sailsjs筛选数据库对象,node.js,mongodb,sails.js,Node.js,Mongodb,Sails.js,一般来说,我对Node还是有点陌生,所以如果这是noob问题,我很抱歉。我的设置是Sailsjs+MongoDB 我设置了一个RESTful API控制器来处理数据库中的“lab”集合 以下是当使用/lab/时,我在控制器中用来拉起此集合中所有对象的内容: index: function (req, res, next) { Lab.find(function foundLabs(err, labs) { if (err) return next(err); res.vi
index: function (req, res, next) {
Lab.find(function foundLabs(err, labs) {
if (err) return next(err);
res.view({
labs: labs
});
});
},
在这个集合中有“site”和“lab”字段,我希望能够过滤参数显示的内容,如:
/实验室/:地点
/实验室/:站点/:实验室
因此,如果拉出“/lab/aq,它将获得aq站点中的所有对象,如果拉出“/lab/aq/123,它将获得aq站点中123实验室的对象
我知道这可能是通过Lab.find函数完成的,但我还没有找到任何文档,可以提供我正在寻找的答案
任何帮助都将不胜感激。在您的
config/routes.js
文件中,您需要添加带有可选参数的路由:
'/findLabs/:site?/:lab?': 'LabController.findLabs'
// use a different route than 'lab' to avoid interfering with the blueprint routes
然后,在您的LabController.js
中,如果请求的url具有site
和/或lab
,您将在req.params
中找到它们:
// when a request is sent to '/findLabs/aq/123':
findLabs: function(req, res, next) {
sails.log(req.params) // {site: 'aq', lab: '123'}
// you can use them to filter:
var query = Lab.find();
if (req.params.site) query.where({site: req.params.site});
if (req.params.lab) query.where({lab: req.params.lab});
query.exec(function(err, labs) {
if (err) return res.serverError();
res.json(labs);
});
}