Я храню некоторые данные на основе локали в следующем формате в CouchDB.
{
"_id": "a62f81b5afad1857c2f6399db500c73b",
"_rev": "3-923e5ed468e0f617f09057035b41051a",
"type": "CAT",
"origin_id": "1",
"locale": "ar",
"values_translation": {
"id": "ar",
"title": ""
}
}
Я использую Nano в качестве клиента в приложении Node JS, и мне нужно вставить, если он не существует/обновить если существуют документы с использованием обработчика обновлений. для этого я создал следующий документ в CouchDB;
"_id": "_design/handler",
"_rev": "36-d2d08a0a822a762ac07faa4042eca5a0",
"updates": {
"handler": "function(doc, req){
if (doc.type === req.type && doc.origin_id === req.origin_id && doc.locale === req.locale)
{ return [doc, 'OK'];}
else { return [null, 'KO']; }
}"
},
"language": "javascript"
}
Но когда я запускаю его, используя следующий нано-метод,
translationsDB.atomic("handler", "handler", "_design/handler",
{ type, origin_id, locale, values_translation: value }).then((response) => {
console.log(response);
}).catch(err => {
console.log(err);
});
он всегда возвращает 'OK'
, даже если я передаю неверные данные. Для реальных данных он возвращает OK
, но не обновляет документ. Нужно понять, как этого добиться (обновить, если документ существует, или вставить, если это новый документ) правильным образом.