在我的CouchDB数据库中,我希望所有文档在更改(并强制执行)时添加“updated_at”时间戳。CouchDB:自动更新字段
- 我不能
validation
功能 修改文档
updates
功能将无法运行,除非他们明确要求(所以它会是可能的更新文件,而不是调用特定的更新功能)
我应该如何去实施呢?
在我的CouchDB数据库中,我希望所有文档在更改(并强制执行)时添加“updated_at”时间戳。CouchDB:自动更新字段
validation
功能updates
功能将无法运行,除非他们明确要求(所以它会是可能的更新文件,而不是调用特定的更新功能)我应该如何去实施呢?
没有触发_update
处理程序,现在没有办法做到这一点。这是跟踪文档更改时间的好主意,但它面临复制问题。
复制正在对公共API的顶部,这意味着:
我可以建议一个解决办法 - 你可以创建一个发出当前日期作为一个关键的一个视图(或它的一部分):
function(doc){
emit(new Date, null);
}
这将分配当前日期的所有文件作为一旦视图生成被触发(发生在第一次请求之后),并将在每次更新特定文档时重新分配新日期。
尽管上述内容可以解决您的问题,但由于Kxepal已解释的原因,我建议不要使用它:如果您位于复制网络中,则每个节点将分配自己的日期。因此,考虑到这一点,我可以推荐的最好方法是在客户端解决问题,并只在发布日期已经嵌入的文档中发布。
这是一个耻辱,没有办法获得复制保存数据作为免除自动更新的用户,因为这将解决复制问题。但仍然需要有一个couchdb工具来更新更新字段。它很肮脏,但我认为我会对交付的更新进行验证,以便拒绝,除非现在(只要用户不是复制用户)交付的'updated_at'时间在<可接受的时钟差>范围内。这很丑陋,但它会完成工作! – 2013-04-26 08:35:45
请随时[开放问题](https://issues.apache.org/jira/browse/COUCHDB)关于(: – Kxepal 2013-04-26 09:56:34