2016-09-15 49 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

相關問題