2016-09-15 43 views
0

这是我的小JSON文件。我希望validate_doc_update函数要求目标数组中的地址字段。
{ “名称”: “有人”, “secondary_id”: “1111”, “目标”: { “地址”: “东西” }] }如何在CouchDB中需要一个数组中的字段?

我已经试过这(当然它不工作):

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

有甚至有一种方法需要在数组中的字段?或者couchDB不允许它?

回答

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'}); 
} 
+0

第一个是我在找的东西。它工作完美。我不敢相信我没有想到这样一个简单的解决方案。我为自己过度复杂。非常感谢你。 – Anna

相关问题