测试 javascript 对象中是否存在任何对象

Test for the existence of ANY object inside a javascript object

全部,

我目前正在为 "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} }
            ]
        }

如果我遍历 "and" 数组,如何检查其中的每个对象是否包含嵌套的任何对象?

我不想测试每个条目的可能性(例如 "gt"、"lt" "eq"、"not" 等),我只想知道是否存在嵌套对象。如果是这样,验证将失败。

只需检查迭代对象有多少个键:

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));