如何防止在 CouchDb 上保存同名文件?
How to prevent saving same named file on CouchDb?
我正在使用 CouchDB 和 Divan - CouchDb 的 C# 接口库。
CouchDb 上一个文件可以上传多次。每次上传文件后 "id" 都会更改,但 "rev" 保持不变。
即使为正在上传的文件定义的所有自定义属性与 CouchDb 上同名的任何现有文件相同,也会发生这种情况。
如果所有自定义属性都相同,有什么方法可以避免上传同名文件吗?获取所有文件并检查它们的文件名重复可能是一种方法,但根据其他因素,它所需的时间绝对不是可取的。
谢谢。
假设您有一个文件的 3 个属性:
- 名字
- 字节大小
- 修改日期
我看到了避免数据库中重复的两种主要可能性。
客户端方法
您查询数据库以检查是否存在具有相同属性的文档和视图。如果它不存在,请创建它。
用户定义的id
您可以像 library 那样从属性中生成一个 ID。
例如,如果我的文档具有这些属性:
"name":"test.txt",
"size":"512",
"lastModified":"2016-11-08T15:44:29.563Z"
您可以像这样构建一个唯一 ID:
"_id":"test.txt/2016-11-08T15:44:29.563Z/512"
我正在使用 CouchDB 和 Divan - CouchDb 的 C# 接口库。
CouchDb 上一个文件可以上传多次。每次上传文件后 "id" 都会更改,但 "rev" 保持不变。 即使为正在上传的文件定义的所有自定义属性与 CouchDb 上同名的任何现有文件相同,也会发生这种情况。
如果所有自定义属性都相同,有什么方法可以避免上传同名文件吗?获取所有文件并检查它们的文件名重复可能是一种方法,但根据其他因素,它所需的时间绝对不是可取的。
谢谢。
假设您有一个文件的 3 个属性:
- 名字
- 字节大小
- 修改日期
我看到了避免数据库中重复的两种主要可能性。
客户端方法
您查询数据库以检查是否存在具有相同属性的文档和视图。如果它不存在,请创建它。
用户定义的id
您可以像 library 那样从属性中生成一个 ID。
例如,如果我的文档具有这些属性:
"name":"test.txt",
"size":"512",
"lastModified":"2016-11-08T15:44:29.563Z"
您可以像这样构建一个唯一 ID:
"_id":"test.txt/2016-11-08T15:44:29.563Z/512"