Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用params使用Sailsjs筛选数据库对象_Node.js_Mongodb_Sails.js - Fatal编程技术网

Node.js 如何使用params使用Sailsjs筛选数据库对象

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

一般来说,我对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.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);
    });
}