首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用SailsJS和MongoDB对动态条件数进行查询

问如何利用SailsJS和MongoDB对动态条件数进行查询
EN

Stack Overflow用户
提问于 2015-12-18 19:01:54
回答 1查看 327关注 0票数 0

我将SailsJS与MongoDB结合使用。对于模型“帐户”,我使用以下代码:

代码语言:javascript
复制
attributes: {   
    campaignID : { type: 'string' },
    cell : { type: 'string' },
    firstname : { type: 'string' },
    lastname : { type: 'string' },
    ssn : { type: 'integer' }
  }

问题是,我不知道如何编写代码来查询模型,因为我可以为模型中的属性设置任意数量的条件。例如,一个查询可以是使用cell="5“查询所有内容,而ssn="123456789”查询可以使用lastname="Borune“查询所有这些查询。当前,我在控制器中实现了以下代码:

代码语言:javascript
复制
list: function(req,res) {
        Accounts.find().where({
            campaignID' : {
                contains : req.param('campaignID')
            },
            cell:{
                contains : req.param('cell')
            }
        }).exec(function(err,data){
            if (err) res.json({error:'true'});
            res.json(data);
        });     
    }

但问题是,当我只想对下面的地址这样的条件使用一个属性时,就不会返回任何文档,因为没有在参数中定义单元格。

代码语言:javascript
复制
http://localhost:1337/search?campaignID=testID2

如何编写条件代码,以便如前所述指定任意数量的条件,并获得与所有条件匹配的文档。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-20 14:41:31

在你真正想要找到任何东西之前,先形成你的搜索标准。如果您使用查询字符串传递参数(即/search?campaignID=foo&cell=42),则应该如下所示:

代码语言:javascript
复制
list: function(req,res) {
  // req.query is {campaignID: 'foo', cell: '42'}
  var criteria = _.mapValues(req.query, function(val) {
    return {contains: val};
  })
  // criteria is {campaignID: {contains:'foo'}, cell: {contains: '42'}}
  Accounts.find(criteria).exec(function(err,data){
    if (err)  {
      return res.json({error:'true'});
    }
    res.json(data);
  });     
}

如果要使用请求有效负载而不是查询字符串,则应将req.query更改为req.body。

不要忘记控制器文件顶部的var _ = require('lodash'),如果您不通过配置将它添加到sails中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34362290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档