javascript - 更新现有文档字段而不丢失 Couch DB 中的旧文档数据
问题描述
这是我的 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 在 pouch DB 中将他的 dept_id 更改为 3
{"people": [{"id": 1,"dept_id": 3,"user": "A",},{"id":2 ,"dept_id": 1,"user": "B",},{"id": 3,"dept_id": 1,"user": "C",}]}
用户 B 在 pouch DB 中将他的 dept_id 更改为 4
{"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 Document 更新为
{“人”:[{“id”:1,“dept_id”:1,“用户”:“A”},{“id”:2,“dept_id”:4,“用户”:“B”}, {"id": 3,"dept_id": 1,"user": "C"}]}
但我的预期输出
{“人”:[{“id”:1,“dept_id”:3,“用户”:“A”},{“id”:2,“dept_id”:4,“用户”:“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);
我搜索了一些链接,他们说
无法更新单个字段,复制用 pouch db 替换整个文档
https://www.tutorialspoint.com/couchdb/couchdb_updating_a_document.htm
解决方案
你不能这样做。因为 CouchDb 允许将数据保存为 JSON 记录。所以最后更新的记录将被添加到 couchDB 中。
如果您想为您的特定功能执行此操作,请将其作为单独的文档
推荐阅读
- python - 如何删除打印的最后一个字符?蟒蛇 3
- mysql - Mysql集群锁定所有行
- php - 我可以将 Laravel 4.2 刀片包含在它自己的控制器中吗?
- javascript - testcafe - 如何断言文本包含在 html 正文中
- javascript - 为什么我的对象显示为未定义,但它存在!反应原生
- java - testng.xml 正在跳过测试?
- visual-studio - 无法解析引用(Xamarin 构建 iOS)
- javascript - 将两个 gulp 任务合并到一个 JS 文件中
- javascript - 如何仅选择第一个“if”以在javascript中设置标记可见为真
- sql - Impala - 在 Impala SQL 中 Stuff 和 'For Xml Path' 如何工作