Javascript 使用类似mongo的动态表达式从数组中删除特定元素
我正在设计一个类似mongo的轻型数据库,它采用面向对象的查询语句,以便每个周期性分离的引用可以是函数或对象引用:Javascript 使用类似mongo的动态表达式从数组中删除特定元素,javascript,node.js,mongodb-query,Javascript,Node.js,Mongodb Query,我正在设计一个类似mongo的轻型数据库,它采用面向对象的查询语句,以便每个周期性分离的引用可以是函数或对象引用: foo.users.find( args ); foo.users.remove( args ); 其中args是JSON编码的对象字符串 我的数据库支持的每个函数都必须有一个指向当前结果集的指针(由obj给出)以及一个比较器对象,类似于mongo中的那些 remove:function(obj,comp){ comp = JSON.parse(comp); va
foo.users.find( args );
foo.users.remove( args );
其中args是JSON编码的对象字符串
我的数据库支持的每个函数都必须有一个指向当前结果集的指针(由obj给出)以及一个比较器对象,类似于mongo中的那些
remove:function(obj,comp){
comp = JSON.parse(comp);
var result = [];
for(var i =obj.length-1;i>=0;--i){
/**For each object in the array*/
var match = true;
for(var key in comp){
/**For each comparator field*/
for(var test in comp[key]){
/**For each logical comparator test*/
if(comparators[test](obj[i][key],comp[key]) == false){
/**A logical test failed, this item does not match
all the criteria*/
match=false;
break;
}
}
}
if(match == true){
/**The item matches the given criteria*/
result.push( obj.slice(i,i+1)[0] );
}
}
return result;
}
在我的特定用例中,查询:
users.remove({"username":{"$eq":"Hello_World"}})
即使以类似的方式在同一数据集上运行的其他查询也可以正常工作,但不起作用。“用户”引用指向树上的一个位置,该位置是一个对象数组,它确实包含相应的用户对象
对树的更改应该是永久性的,但是,它目前并不是这样工作的。对该树的进一步查询将显示用户“Hello_World”从未被删除,并且是有效用户
除类似功能外,未对“obj”进行任何更改。此外,返回值应该是一个包含1个对象的对象数组,但不包含任何对象。我已找到并解决了以下问题:
最后,它按照指示工作,现在可以处理更大更好的事情了所有有效的javascript?没有id10t错误?