Mongoose查找查询不起作用,即使等效查询在mongodb上工作正常

时间:2013-02-11 00:08:17

标签: node.js mongodb mongoose

我正在我的页面中实现标签系统。当用户输入任何字符串时,它将触发我的快速路由并尝试查找键入的内容以填充列表并将其作为JSON返回以处理回调。问题是关于moongose,因为查询非常正确,如果我在mongo shell上执行它就可以正常工作。

查询:

var token = '/.*' + req.query.search + '.*/i';
Tag.find({ description: token , inactivatedAt: null }, function(err, tags) {
    var tempArray = [];

    if (tags) {
        var counter = 0;

        tags.forEach(function(tag) {
            var dArray = [];

            dArray.push(counter++);
            dArray.push(tag.description);
            dArray.push(null);
            dArray.push(null);
            tempArray.push(dArray);
        });
    }

    res.writeHead(200, {'content-type': 'text/json'});
    res.end(JSON.stringify(tempArray));
});

即使我查询description: { $regex: token }description: token,也找不到结果。相同的查询参数很好,并在shell上带来了mongo的结果。例如:db.tags.find({ description: /.*MET.*/i , inactivatedAt: null }).pretty()但我的猫鼬查询不起作用。

任何线索都会非常有帮助。提前谢谢!

1 个答案:

答案 0 :(得分:1)

您需要将token转换为正则表达式而不仅仅是字符串:

var token = new RegExp(req.query.search, 'i');