变量替换在node js的mongo中在$ in中不起作用

濑户

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

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值视为正则表达式,请使用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) => {...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章