Node.js mongodb中的查询解析

Node.js mongodb中的查询解析,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我正在传递一个查询参数,如下所示 var str="["56557e9e8091afc81a4371c8","565ac01b076fd1141492b594","565ab985076fd1141492b586","565aba0a076fd1141492b58c","565ab9d3076fd1141492b588","565aba4b076fd1141492b58e"]"; console.log(req.query.pageModalIds); return RuleSetModel

我正在传递一个查询参数,如下所示

var str="["56557e9e8091afc81a4371c8","565ac01b076fd1141492b594","565ab985076fd1141492b586","565aba0a076fd1141492b58c","565ab9d3076fd1141492b588","565aba4b076fd1141492b58e"]";
console.log(req.query.pageModalIds);
return RuleSetModel.find({ 'pageId': { $in: req.query.pageModalIds } }, function (err, ruleset) {
        if (!err) {
            console.log('get rule set');
            return res.send(ruleset);
        } else {
            res.statusCode = 500;
            console.log('Internal error(%d): %s', res.statusCode, err.message);
            return res.send({ error: 'Server error' });
        }
    });
它被接收到我的节点api中,如下所示

var str="["56557e9e8091afc81a4371c8","565ac01b076fd1141492b594","565ab985076fd1141492b586","565aba0a076fd1141492b58c","565ab9d3076fd1141492b588","565aba4b076fd1141492b58e"]";
console.log(req.query.pageModalIds);
return RuleSetModel.find({ 'pageId': { $in: req.query.pageModalIds } }, function (err, ruleset) {
        if (!err) {
            console.log('get rule set');
            return res.send(ruleset);
        } else {
            res.statusCode = 500;
            console.log('Internal error(%d): %s', res.statusCode, err.message);
            return res.send({ error: 'Server error' });
        }
    });
现在我想像这样解析我的查询

var str="["56557e9e8091afc81a4371c8","565ac01b076fd1141492b594","565ab985076fd1141492b586","565aba0a076fd1141492b58c","565ab9d3076fd1141492b588","565aba4b076fd1141492b58e"]";
console.log(req.query.pageModalIds);
return RuleSetModel.find({ 'pageId': { $in: req.query.pageModalIds } }, function (err, ruleset) {
        if (!err) {
            console.log('get rule set');
            return res.send(ruleset);
        } else {
            res.statusCode = 500;
            console.log('Internal error(%d): %s', res.statusCode, err.message);
            return res.send({ error: 'Server error' });
        }
    });
此方法不提供我的数据。什么是我的错。谢谢

注意:如果我设置为下面的固定参数,这是有效的

return RuleSetModel.find({ 'pageId': { $in: ["565a9fddf84313fc08b260dc","565ac01b076fd1141492b594"] } }, function (err, ruleset) {

我认为问题在于
req.query.pageModalIds
。因为您没有对它进行任何处理,所以它很可能保持为字符串对象。在应用于查询之前,需要将其转换为数组对象。下面是一个示例

var pageModalIds = JSON.parse(req.query.pageModalIds)

在此之后,您可以在此新变量的查询中应用$。试试这个,让我知道。:)

我认为问题在于
req.query.pageModalIds
。因为您没有对它进行任何处理,所以它很可能保持为字符串对象。在应用于查询之前,需要将其转换为数组对象。下面是一个示例

var pageModalIds = JSON.parse(req.query.pageModalIds)

在此之后,您可以在此新变量的查询中应用$。试试这个,让我知道。:)

在DB中是pageId ObjectId还是简单字符串?@SarathNair,如果我这样设置固定{‘pageId’:{$in:[“565a9fddf84313fc08b260dc”,“565ac01b076fd1141492b594”]},这是有效的。另外一个澄清是req.query.pageModalIds字符串还是数组对象?我已经发布了一个答案,请尝试一下DB中的pageId ObjectId还是简单字符串?@SarathNair,如果我像这样设置修复{'pageId':{$in:[“565a9fddf84313fc08b260dc”,“565ac01b076fd1141492b594”]},这是有效的。还有一个澄清,是req.query.pageModalIds字符串还是数组对象?我已经发布了一个答案,请尝试一下