Обновление существующего поля документа без потери старых данных документа в Couch DB - PullRequest
0 голосов
/ 25 апреля 2018

Это мой документ Couch DB

{"people": [{"id": 1,"dept_id": 1,"user": "A",},{"id": 2,"dept_id": 1,"user": "B",},{"id": 3,"dept_id": 1,"user: "C",}]}

Пользователь A Изменил свой dept_id на 3 в пакете DB

{"people": [{"id": 1,"dept_id": 3,"user": "A",},{"id":2 ,"dept_id": 1,"user": "B",},{"id": 3,"dept_id": 1,"user": "C",}]}

Пользователь Б изменил свой dept_id на 4 в мешке DB

{"people": [{"id": 1,"dept_id": 1,"user": "A"},{"id":2 ,"dept_id": 4,"user": "B"},{"id": 3,"dept_id": 1,"user": "C"}]}

Если A и B копируют данные в Couch DB, документ Couch обновляется с

{"people": [{"id": 1, "dept_id": 1, "user": "A"}, {"id": 2, "dept_id": 4, "user": "B "}, {" id ": 3," dept_id ": 1," user ":" C "}]}

Но мой ожидаемый результат

{"people": [{"id": 1, "dept_id": 3, "user": "A"}, {"id": 2, "dept_id": 4, "user": "B "}, {" id ": 3," dept_id ": 1," user ":" C "}]}

Я пытался обновить пакет Db

var mydb = new PouchDB('localPouchDb',{revs_limit: 1, auto_compaction: true});db.upsert('people ', function myDeltaFunction(doc) { doc.dept_id=4  return doc;}).then(function () {  console.log('success')}).catch(function (err) { console.log(err)});

Я пытался повторить кушетку Db с мешком

var remoteDB = new PouchDB('remote address',{revs_limit: 1, auto_compaction: true});db.replicate.to(remoteDB);

Я искал в некоторых ссылках, и они сказали, что

невозможно обновить одно поле, повторить заменить весь документ с мешком дБ

https://www.tutorialspoint.com/couchdb/couchdb_updating_a_document.htm

Как обновить запись / поле документа в couchdb

1 Ответ

0 голосов
/ 23 мая 2019

Вы не можете сделать это.Потому что CouchDb позволяет сохранять данные в виде записей JSON.Так что последняя обновленная запись будет добавлена ​​в couchDB.

Если вы хотите сделать это для вашей конкретной функциональности, сделайте ее отдельным документом

...