Rap*_*nah 0 couchdb nosql pouchdb
TL; DR:如果选择使用文档的address和lastname中的字段_id,您将如何处理在多设备(有时是脱机)环境中的扩展address以及lastname扩展方式。
在文档_id中使用将来可能会更改的字段时,我正在寻找最佳实践。例如,address和/或lastname。不仅客户的地址可以更改,而且如果用户错误输入了错误的地址怎么办?如果在跨设备复制文档并在多个设备上更新文档之后才发现错误,该怎么办?
有没有办法处理_ids的更新?例如,用一个新文件创建一个全新文件_id并删除旧文件?但这是否可以在多设备,有时甚至是离线世界中扩展?
例如:
{
"_id": "Jane-Smith",
"address": "44 street, Boston, MA 93999",
"telephone": "8888888888"
}
Run Code Online (Sandbox Code Playgroud)
要处理有多个同名客户的情况,在客户名中添加一些内容是否有意义?
{
"_id": "Jane-Smith-7ae78c",
"address": "44 street, Boston, MA 93999",
"telephone": "8888888888"
}
Run Code Online (Sandbox Code Playgroud)
优点:
_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。但是,如果客户的地址和/或名称发生变化怎么办?
我正在设法把正确的方法存储customer在PouchDB / CouchDB中。
如果您的ID包含经常更改的信息,那么最好不要将这些信息存储在ID中。将尽可能多的用户信息打包到id中的优化是一个很好的选择,但是如果该信息发生更改,它就会失败,因为一旦id更改,您就无法再真正跟踪对该文档的更改,因为它实际上变成了一个新文档。
在您的情况下,您可能应该将ID设置为其他名称(甚至是随机数),然后使用mapreduce / pouchdb-find进行查询。