Node.js 使用正则表达式搜索时,Mongoj不返回数据
Node.js,mongodb。 我正在搜索使用正则表达式的技能列表。这是我的服务器代码:Node.js 使用正则表达式搜索时,Mongoj不返回数据,node.js,mongodb,mongojs,Node.js,Mongodb,Mongojs,Node.js,mongodb。 我正在搜索使用正则表达式的技能列表。这是我的服务器代码: var nconf = require('nconf'); var db = require('mongojs').connect(nconf.get('mongolab:connection'), ['skills', 'users']); app.get('/api/skill', function(req, res){ console.log('searching for ' + req.
var nconf = require('nconf');
var db = require('mongojs').connect(nconf.get('mongolab:connection'), ['skills', 'users']);
app.get('/api/skill', function(req, res){
console.log('searching for ' + req.query['q']);
var query = '{name: /' + req.query['q'] + '/i}';
console.log('query: ' + query);
db.skills.find(query, function(err, data){
console.log('returning ' + JSON.stringify(data));
if(!err){
res.writeHead(200, {'content-type': 'text/json' });
res.write( JSON.stringify(data) );
res.end('\n');
}
});
});
我的列表中确实有一个值“asp.net”。控制台日志输出以下内容:
searching for .net
query: {name: /.net/i}
returning []
我使用MongoHub连接到同一个服务器/db,将语句粘贴到查询字段中,并取回我的记录:
{
"name": "asp.net",
"description": "",
"_id": {
"$oid": "500b4aae14f7960e91000001"
}
}
有什么建议吗?
查询必须是对象,而不是字符串。请尝试以下方法:
var query = {name: new RegExp(req.query['q'], 'i') };
query
必须是对象,而不是字符串。请尝试以下方法:
var query = {name: new RegExp(req.query['q'], 'i') };
RegExp,而不是RegEx。但是是的,就是这样。奇怪的是:var query={name:newregexp(req.query['q'],'i');log('query:'+JSON.stringify(query));输出:query:{“name”:{},不管req.query['q']的值是什么。但是它起作用了,所以我很高兴。谢谢大家!@KingJSON.stringify(query)
输出{“name”:{}}
,因为JSON不支持正则表达式.RegExp,而不支持RegEx。但是是的,就是这样。奇怪的是:var query={name:newregexp(req.query['q'],'i');log('query:'+JSON.stringify(query));输出:query:{“name”:{},不管req.query['q']的值是什么。但是它起作用了,所以我很高兴。谢谢大家!@KingJSON.stringify(query)
输出{“name”:{}}
,因为JSON不支持正则表达式。