繁体   English   中英

如何用mongoose绑定mongodb中的搜索值

[英]How bind search values in mongodb with mongoose

我的/ search /:query路由中有以下代码:

var param = {
    query: req.query['query']
}

MyModel.find({
        "$or": [
            { 'name': req.param.query },
            { 'age': req.param.query  },
            { 'event': req.param.query },
        ]
    }, function (err, results) {
        if (err) {
            console.log(err)
        }
        else {
            res.render('index', { 
                data: results
            });
        }
    }
);

很好,我可以搜索几乎所有我想要的数据,但只能单独搜索。 如果我想输入搜索名称+年龄怎么办? 例如:“狮子座22”。

猫鼬有什么办法可以帮助我呢?

更新:

我的问题是:

我有表格列出了标题,该标题是“ eventName”和“ eventDate”的串联。

该字段的真实示例:

'特别活动-2015年12月20日''经典活动-2015年12月3日''夏季热活动-2005年5月7日'

每周将创建4个事件。 在某个时候,用户将搜索旧事件,我相信用户将以以下格式搜索:“事件名称-事件日期”。

因此,我需要一种在控制器中绑定此值的方法。

我不熟悉mongoose但是要做到这一点,您必须有一种将查询参数绑定到要搜索的属性的方法。 否则,他们不会知道Leo是名字,而22是年龄。

您的路径就像search?name=:name&age=:age&event=:event ,在您的代码中,您必须像处理param不为null一样对其进行处理和添加条件。

似乎您仅使用一个参数( req.param.query )来过滤所有属性。 这与猫鼬无关:您可以为每个属性创建不同的参数,并将其沿查询字符串传递。

例如:

"$or": [
        { 'name': req.param.name },
        { 'age': req.param.age  },
        { 'event': req.param.event },
    ]

您的HTTP请求将如下所示:

HTTP:// youraddress / expressRoute名称=利奥&年龄= 22

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM