4 mongoose mongodb node.js mongodb-query
我有一个API方法,用户可以传入自己的查询.集合中的字段只是ns,因此用户可能会传递以下内容:
v.search = function(query: Object){
// query => {ns:{$in:['foo','bar',baz]}} // valid!
// query => {ns:{$in:{}}} // invalid!
// query => {ns:/foo/} // valid!
});
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点,如烟雾测试,可能会失败明显错误的查询?
我希望一些MongoDB库可以导出这个功能......但是很有可能它们只通过将查询发送到数据库来验证查询,实际上,这是查询有效/无效的真正仲裁者.
但我希望在将查询发送到数据库之前验证该查询.
作为MongoDB Compass一部分的一些模块已经成为开源的.有两个模块可能适用于您的用例:
虽然它们可能不适合您的用例100%,但它应该给您一个非常接近的验证.例如npm install mongodb-language-model,然后:
var accepts = require('mongodb-language-model').accepts;
console.log(accepts('{"ns":{"$in":["foo", "bar", "baz"]}}')); // true
console.log(accepts('{"ns":{"$in":{}}}')); // false
console.log(accepts('{"ns":{"$regex": "foo"}}')); // true
Run Code Online (Sandbox Code Playgroud)
npm install mongodb-query-parser将字符串值解析为JSON查询也可能是有意义的.例如:
var parse = require('mongodb-query-parser');
var query = '{"ns":{"$in":["foo", "bar", "baz"]}}';
console.log(parse.parseFilter(query)); // {ns:{'$in':['foo','bar','baz']}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1961 次 |
| 最近记录: |