转移到CouchDB时丢失的一件事是能够为字段设置默认值。例如,在SQL数据库中,您可以拥有一个名为date
的字段,默认为now()
。是否有可能在CouchDB中做类似的事情?
据我所知,在每次创建和更新操作中运行的唯一代码是设计文档的validate_doc_update
方法。但是,当我们通过创建虚拟验证来测试它时,我们无法使其工作。这是一个简单的验证函数,它试图设置字段newDoc.foo
,但它永远不会被保存。
function(newDoc, oldDoc, userCtr) {
newDoc.foo = "bar!";
}
我们已经检查并验证了validate_doc_update
方法被调用,所以看起来如果有一种方法可以自动将字段添加到CouchDB文档中,那么使用验证函数就不是一种方法。还有其他建议吗?
答案 0 :(得分:3)
当您通过视图查看文档时,可以使用某些视图逻辑来应用默认值。
您可以在写完之后(可能在后续更改之后)对其应用update handler但是每次都需要另一个调用来调用它。
我可能会通过在插入文档之前创建您作为对象插入的文档并在其中应用默认值来解决此问题,因此您写入CouchDB的内容已经是正确的。