Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用正则表达式搜索时,Mongoj不返回数据_Node.js_Mongodb_Mongojs - Fatal编程技术网

Node.js 使用正则表达式搜索时,Mongoj不返回数据

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.

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.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']的值是什么。但是它起作用了,所以我很高兴。谢谢大家!@King
JSON.stringify(query)
输出
{“name”:{}}
,因为JSON不支持正则表达式.RegExp,而不支持RegEx。但是是的,就是这样。奇怪的是:var query={name:newregexp(req.query['q'],'i');log('query:'+JSON.stringify(query));输出:query:{“name”:{},不管req.query['q']的值是什么。但是它起作用了,所以我很高兴。谢谢大家!@King
JSON.stringify(query)
输出
{“name”:{}}
,因为JSON不支持正则表达式。