TL; DR:如果选择在文档的address
中使用lastname
和_id
等字段,您如何处理address
的更新和lastname
以多设备,有时是离线环境进行扩展的方式。
我正在寻找使用文档_id
中可能在将来发生变化的字段时的最佳做法。例如,address
和/或lastname
。客户的地址不仅可以更改,而且如果用户错误地输入了错误的地址,该怎么办?如果在文档跨设备复制并在多个设备上更新之后才发现错误怎么办?
有没有办法处理_id
的更新?例如,使用新的_id
创建一个全新的文档并删除旧文档?但这在多设备,有时是离线世界中是否会扩展?
例如:
{
"_id": "Jane-Smith",
"address": "44 street, Boston, MA 93999",
"telephone": "8888888888"
}
要处理多个客户名称相同的情况,是否有必要在客户名称中添加内容?
{
"_id": "Jane-Smith-7ae78c",
"address": "44 street, Boston, MA 93999",
"telephone": "8888888888"
}
优点:
_id
是主键,因此使用_id
进行搜索的速度更快缺点:
_id
中使用的属性发生了变化,该怎么办?将对陈旧数据执行搜索。如果使用更新的_id
创建新文档,那么可能已进行脱机更改的同步数据库中的实现有哪些?更新
这篇文章很有帮助:
https://davidcaylor.com/2012/05/26/can-i-see-your-id-please-the-importance-of-couchdb-record-ids/
我没有意识到_ids
可能由address
和 lastname
组成。 但是,如果客户的地址和/或名称发生变化,该怎么办?
我正试图围绕在PouchDB / CouchDB中存储customer
数据的正确方法。
答案 0 :(得分:5)
如果您的ID包含经常更改的信息,那么最好不要将该信息存储在ID中。将尽可能多的用户信息打包到ID中的优化是一个很好的优点,但如果该信息发生变化则会崩溃,因为一旦id发生变化,您就无法真正跟踪对该文档的更改,因为它实际上已成为新文档
在你的情况下,你可能应该将id设为其他内容(随机,偶数),然后使用mapreduce / pouchdb-find进行查询。