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,它按预期工作。