我正在处理一个自动完成输入框,我正在尝试创建一个mongoose端点,它将根据输入数据获取用户对象。数据可能不完整,但它仍然可以获得类似的所有内容。例如:
var input = "st";
// Should return a user object like this one.
var userObject = {
name: {
full: 'Stephen Brinkworth',
first: 'Stephen',
last: 'Brinkworth'
}
};
我已经研究过这个问题,从我看到的情况来看,建议的端点看起来像这样。
User.find({name: {full: new RegExp(req.query.input, 'i')}}).exec(...);
我遇到的唯一问题是当我使用这个端点时,我总是回到一个空数组。谁能帮我这个?非常感谢。
答案 0 :(得分:1)
您需要使用MongoDB的$regex查询运算符:
为查询中的模式匹配字符串提供正则表达式功能。
可以使用文档中指定的以下语法之一来使用$regex
运算符:
{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
使用$regex
运算符的简单解决方案是:
var nameRegex = new RegExp(req.query.input);
User.find({'name.full': {$regex: nameRegex, options: 'i'}});