在节点js中,mongo中的$ invariablesreplace不起作用

我已经构build了/57639afa5961debc1b256745/, /5763c5d17d05688c1838c7a3/,节点path/57639afa5961debc1b256745/, /5763c5d17d05688c1838c7a3/,但是当我尝试使用nodepath /57639afa5961debc1b256745/, /5763c5d17d05688c1838c7a3/,即使它有子节点/57639afa5961debc1b256745/, /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构build为string数组而不是一个逗号分隔的string。 如果您希望将id值视为正则expression式,请使用RegExp构造函数而不是添加斜杠字符:

 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) => {...