如何在CouchDB中需要数组中的字段?

时间:2016-09-15 16:29:30

标签: javascript arrays json couchdb require

这是我的小JSON文件。我希望validate_doc_update函数要求目标数组中的地址字段 {   "姓名":"某人",   " secondary_id":" 1111",   "目的地":[   {     "地址":"某事"   }] }

我试过这个(当然不行):

function(newDoc, oldDoc, userCtx){
if(!newDoc.destination.address){
throw({forbidden:'doc.address is required'});
 }
}

有没有办法要求数组中的字段?或者couchDB不允许吗?

1 个答案:

答案 0 :(得分:0)

假设destination数组中的任何对象都可以包含address以便验证成功,您可以使用以下验证函数:

function(newDoc, oldDoc, userCtx) {
  if(newDoc.destination && newDoc.destination.length > 0){
    for(var i = 0; i < newDoc.destination.length; i++){
      if(newDoc.destination[i].address) return;
    }
  }
  throw({forbidden:'doc.address is required'});    
}

如果要求destination数组中的所有对象都包含address,请使用以下验证函数:

function(newDoc, oldDoc, userCtx) {
  if(newDoc.destination && newDoc.destination.length > 0){
    for(var i = 0; i < newDoc.destination.length; i++){
      if(!newDoc.destination[i].address) throw({forbidden:'doc.address is required'});
    }
    return;
  }
  throw({forbidden:'doc.address is required'});
}