如何将 mongodb 中的搜索值与 mongoose 绑定
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
});
}
}
);
很好,我可以搜索几乎所有我想要的数据,但只能单独搜索。如果我想要搜索姓名+年龄怎么办?示例:'Leo 22'.
猫鼬有什么办法可以帮助我吗?
更新:
我的问题是:
我有表格列出它的标题,这个标题是 'eventName' 和 'eventDate' 的串联。
该字段的真实示例:
'Special Event - 20/12/2015'
'Classic Event - 12/03/2015'
'Hot Summer Event - 05/07/2005'
每周将创建4个活动。在某些时候,用户会搜索一个旧事件,我相信用户会以这种格式搜索:'EVENT NAME - EVENT DATE'..
所以我需要一种在我的控制器中绑定这些值的方法。
我对 mongoose
不熟悉,但要做到这一点,您必须有办法将查询参数绑定到要搜索的属性。否则,他们不会知道 Leo
是姓名,22
是年龄。
你的路径就像 search?name=:name&age=:age&event=:event
并且在你的代码中,如果参数不是 null
,你将不得不处理,添加并条件化它。
您似乎只使用一个参数 (req.param.query
) 来过滤所有属性。这与猫鼬无关:您可以为每个属性创建不同的参数并将它们沿查询字符串传递。
例如:
"$or": [
{ 'name': req.param.name },
{ 'age': req.param.age },
{ 'event': req.param.event },
]
您的 HTTP 请求将是这样的:
我的 /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
});
}
}
);
很好,我可以搜索几乎所有我想要的数据,但只能单独搜索。如果我想要搜索姓名+年龄怎么办?示例:'Leo 22'.
猫鼬有什么办法可以帮助我吗?
更新:
我的问题是:
我有表格列出它的标题,这个标题是 'eventName' 和 'eventDate' 的串联。
该字段的真实示例:
'Special Event - 20/12/2015' 'Classic Event - 12/03/2015' 'Hot Summer Event - 05/07/2005'
每周将创建4个活动。在某些时候,用户会搜索一个旧事件,我相信用户会以这种格式搜索:'EVENT NAME - EVENT DATE'..
所以我需要一种在我的控制器中绑定这些值的方法。
我对 mongoose
不熟悉,但要做到这一点,您必须有办法将查询参数绑定到要搜索的属性。否则,他们不会知道 Leo
是姓名,22
是年龄。
你的路径就像 search?name=:name&age=:age&event=:event
并且在你的代码中,如果参数不是 null
,你将不得不处理,添加并条件化它。
您似乎只使用一个参数 (req.param.query
) 来过滤所有属性。这与猫鼬无关:您可以为每个属性创建不同的参数并将它们沿查询字符串传递。
例如:
"$or": [
{ 'name': req.param.name },
{ 'age': req.param.age },
{ 'event': req.param.event },
]
您的 HTTP 请求将是这样的: