2011-04-27 65 views
2

迁移到CouchDB时丢失的一件事是能够为字段设置默认值。例如,在SQL数据库中,可以有一个名为date的字段,默认为now()。是否有可能在CouchDB中做类似的事情?是否可以将字段添加到CouchDB验证功能中的文档?

从我所知道的情况来看,在每次创建和更新操作时运行的唯一一段代码是设计文档的validate_doc_update方法。但是,当我们通过创建虚拟验证来测试它时,我们无法实现它。这里有一个简单的验证功能,试图设置字段newDoc.foo,但它永远不会被保存。

function(newDoc, oldDoc, userCtr) { 
    newDoc.foo = "bar!"; 
} 

我们已经检查和验证,该方法validate_doc_update获取调用,所以才出现,如果有一种方法来自动字段添加到CouchDB文档,使用验证功能不是要走的路。还有其他建议吗?

回答

3

当您通过视图查看文档时,您可以使用某些查看逻辑来应用默认值。

您可以在编写代码后(也可能在后续更改后)应用update handler,但每次都需要其他调用才能调用它。

我可能会解决这个问题,方法是在插入文档之前创建要作为对象插入的文档,并在其中应用默认值,以便您写入CouchDB的内容已经正确。

+1

在最近的CouchDB版本中[不允许在视图中修改文档](http://web.archiveorange.com/archive/v/oW6DzLPEoEfysNJMyaLk)。 – 2011-04-29 17:36:14

+0

感谢您提供更新处理程序的提示。精心设计的更新处理程序可以完全像创建和更新文档的正常机制,同时还添加其他字段(如创建日期)。另外,通过将它们放入更新函数中,它们在复制后不会再次运行。 – Pridkett 2011-05-12 17:04:03

相关问题