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