总的来说,我对 Node 还是有点陌生,所以如果这是一个菜鸟问题,我很抱歉。我的设置是 Sailsjs + MongoDB。
我设置了一个 RESTful API Controller 来处理我的数据库中的“实验室”集合。
这是我在使用 /lab/ 时在我的 Controller 中提取该集合中所有对象的方法:
index: function (req, res, next) {
Lab.find(function foundLabs(err, labs) {
if (err) return next(err);
res.view({
labs: labs
});
});
},
在此集合中有“站点”和“实验室”字段,我希望能够过滤显示的参数,例如:
/lab/:site
/lab/: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
,您将在 中找到它们>请求参数
:
// 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);
});
}
关于node.js - 如何通过 Sailsjs 使用参数过滤数据库对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30655114/