所有
我目前正在为“AND”RethinkDB查询编写验证。 包含“gt”(大于)和“lt”(小于)的正确“AND”查询将如下所示:
"query": {
"and": [
{ "gt": {"metadata.marvel_comics": 10} },
{ "lt": {"metadata.dc_comics": 50} }
]
}
我正在尝试确保查询的“gt”部分中不包含额外的对象。
不正确的查询将是......
"query": {
"and": [
{ "gt": {"metadata.marvel_comics": 10}
"eq": { "metadata.archie_comics": 10 }
},
{ "lt": {"metadata.dc_comics": 50} }
]
}
如果我遍历“和”数组,我如何检查内部的每个对象是否包含嵌套的任何对象?
我不想测试条目的每种可能性(例如“gt”,“lt”“eq”,“not”等),我只想知道嵌套对象是否存在。如果是这样,验证将失败。
答案 0 :(得分:0)
只需检查迭代对象有多少个键:
var bQuery = {
"query": {
"and": [
{
"gt": {
"metadata.marvel_comics": 10
},
"eq": {
"metadata.archie_comics": 10
}
}, {
"lt": {
"metadata.dc_comics": 50
}
}]
}
}
var gQuery = {
"query": {
"and": [
{
"gt": {
"metadata.marvel_comics": 10
}
}, {
"lt": {
"metadata.dc_comics": 50
}
}]
}
}
function validateQuery(obj){
var and = obj.query.and;
return and.every(function(comm){
if(Object.keys(comm).length > 1){
return false;
} else {
return true;
}
});
}
console.log(validateQuery(bQuery), validateQuery(gQuery));