Node.js 在节点为js的mongo中,变量替换在$in中不起作用

Node.js 在节点为js的mongo中,变量替换在$in中不起作用,node.js,mongodb,express,Node.js,Mongodb,Express,我已将节点路径构造为/57639AF5961DEBC1B256745/,/5763c5d17d05688c1838c7a3/,,但当我尝试用节点路径进行替换时,即使它有子节点,结果也是空数组: Degree.prototype.findByPath = function(dbObj, degrees) { var nodePath = ''; for(var i in degrees) { nodePath = nodePath + '/' + degrees[

我已将节点路径构造为
/57639AF5961DEBC1B256745/,/5763c5d17d05688c1838c7a3/,
,但当我尝试用
节点路径
进行替换时,即使它有子节点,结果也是空数组:

Degree.prototype.findByPath = function(dbObj, degrees) {
    var nodePath = '';

    for(var i in degrees) {
        nodePath = nodePath + '/' + degrees[i]['_id'] + '/, ';
    }

    return new Promise(function (resolve, reject) {
        console.log(nodePath);
        dbObj.collection('degree').find({ 
            'path': {
                '$in': 
                    [ nodePath ] 
                } 
            }).toArray((err, results) => {
                if(err) {
                    reject(err);
                } else {
                    var nodes;

                    if(results != null)
                        nodes = degrees.concat(results);
                    else
                        nodes = degrees;

                    resolve(nodes);
                }               
            });
    }); 
};

您需要将
nodePath
构建为一个字符串数组,而不是一个逗号分隔的字符串。如果希望将id值视为正则表达式,请使用构造函数而不是添加斜杠字符:

var nodePath = [];

for(var i in degrees) {
    nodePath.push(new RegExp(degrees[i]['_id']));
}

return new Promise(function (resolve, reject) {
    console.log(nodePath);
    dbObj.collection('degree').find({ 
        'path': {
            '$in': nodePath
            } 
        }).toArray((err, results) => {...

Degree.prototype.findByPath=function(dbObj,degrees){var nodePath='';for(var i in degrees){nodePath=nodePath+degrees[i][''id']+',';}if(nodePath!='')nodePath='['+nodePath+']'”;返回新的承诺(函数(解析,拒绝){console.log(nodePath);dbObj.collection('degree')。查找({'path':{'$regex':nodePath})。toArray((呃,results)=>{@Sethu抱歉,我不理解您的评论。您的代码没有按预期工作。因此我尝试使用$regex,它按预期工作。