Javascript 是否可以在CouchDB验证函数中向文档添加字段?

Javascript 是否可以在CouchDB验证函数中向文档添加字段?,javascript,validation,couchdb,Javascript,Validation,Couchdb,在迁移到CouchDB的过程中丢失的一件事是能够为字段设置默认值。例如,在SQL数据库中,可以有一个名为date的字段,默认为now()。可以在CouchDB中执行类似的操作吗 据我所知,在每次创建和更新操作中运行的唯一一段代码是设计文档的validate\u doc\u update方法。然而,当我们通过创建虚拟验证来测试它时,我们无法让它工作。这里有一个简单的验证函数,它试图设置字段newDoc.foo,但它从未保存 function(newDoc, oldDoc, userCtr) {

在迁移到CouchDB的过程中丢失的一件事是能够为字段设置默认值。例如,在SQL数据库中,可以有一个名为
date
的字段,默认为
now()
。可以在CouchDB中执行类似的操作吗

据我所知,在每次创建和更新操作中运行的唯一一段代码是设计文档的
validate\u doc\u update
方法。然而,当我们通过创建虚拟验证来测试它时,我们无法让它工作。这里有一个简单的验证函数,它试图设置字段
newDoc.foo
,但它从未保存

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

我们已经检查并验证是否调用了
validate\u doc\u update
方法,因此,如果有一种方法可以自动将字段添加到CouchDB文档中,那么使用validation函数似乎是不可取的。还有其他建议吗?

通过视图查看文档时,可以使用一些视图逻辑应用默认值

您可以在编写后(可能在后续更改后)对其应用一个调用,但每次都需要另一个调用来调用它


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

在CouchDB的最新版本中。感谢您提供有关更新处理程序的提示。一个精心设计的更新处理程序可以看起来和感觉上与创建和更新文档的正常机制完全相同,同时仍然添加其他字段,例如创建日期。此外,通过将这些函数放入更新函数中,它们在复制后不会再次运行。