是否有一个 javascript 库可以让我在类似于 MongoDB 查询语言的 DSL 中表达对象谓词?为了在大型程序中清晰起见,我想说:
var obj = {
a: 1,
b: 'abcdefg'
}, qry = {
a: { $gt: 0 },
b: /^abc/
};
if(query(qry).matches(obj)) {
// do something appropriate since
}
代替:
var obj = {
a: 1,
b: 'abcdefg'
};
if(obj.a>0 && qry.b.test(obj.b)) {
// do something appropriate
}
我正在使用 Node.js,所以 NPM 上的任何内容会很好。如果库可以从数组中选择对象以及匹配单个对象,那将是一个额外的好处。
我回顾了这两个相关的问题,但它们对我的情况并不是特别有帮助:
最佳答案
好的,我找到了答案:Sift.js
现在是长答案:这是 asked and answered before .重点是:
- 如果你真的想要 Mongo 语法,请使用 Sift
- 如果您想更主流,请使用 Underscore.js像其他人一样。除了它基本上可以实现 sift 的功能之外,它还有许多方便的功能,但语法略有不同。
- 您可能根本不需要任何库 - 现代浏览器直接在 Array prototype 上支持许多有用的功能。 ,例如
filter()
。
最后,mongodb-riff似乎正在尝试做类似的事情,但目前该页面明确指出它不起作用 - 也许它已被放弃。但他的自述文件至少是有值(value)的 :-),他提到了 sift 和 Query Engine看起来更成熟,虽然对我来说太复杂了!
就我个人而言,我将使用 Underscore,因为现在我第一次研究它,我意识到它有很多我需要的方便的东西,而且我真的只想做一些简单的功能,比如是 _.find()
中的下划线。但我想如果你想做更复杂的类似 mongo 的查询,你会用 Sift 在更少的 LOC 中完成。
关于javascript - 什么 Javascript 库可以针对对象评估类似 MongoDB 的查询谓词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15397668/