我正在同步一個PouchDB數據庫(使用Angular)和一個CouchDB數據庫。CouchDB:bulk_docs返回不正確的狀態代碼
複製正在進行時,代碼正在發出POST請求,以批量更新到http://127.0.0.1:5984/testdb/_bulk_docs
。
我有一個數據庫驗證規則拒絕未經授權的寫入,它會產生一個禁止的錯誤。因此,服務器響應JSON響應爲[{"id":"0951db944e729c981ad3964c22002d55","rev":"8-ccdcb52743cae43c5870113f09f2e25a","error":"forbidden","reason":"Not Authorized"}]
根據to the docs (at the end of the page),上述響應應生成417 Expectation Failed
狀態碼。但是,它當前會生成一個201 Created
狀態碼。
由於響應代碼不正確,客戶端(PouchDB)顯示所有記錄已同步,但更新未寫入服務器(CouchDB)。
是否有配置選項來更改此狀態碼?
預先參考,我的validate_doc_update
功能如下。當all_or_nothing
參數設置爲true
function(newDoc, oldDoc, userCtx){
if (!userCtx) throw({forbidden: 'Need a user to update'});
if((userCtx.roles.indexOf('_admin') == -1) && (userCtx.roles.indexOf('backend:manager') == -1)){
throw({forbidden: "Not Authorized"});
}
}
看起來你是對的。我認爲如果至少有一條記錄無法同步,會出現417錯誤。看起來我必須手動處理認證錯誤。 – shanecp