couchdb设计视图,更新文档创建的字段

时间:2010-09-22 18:37:57

标签: couchdb node.js registration

创建/更新文档时,是否可以动态更新沙发或更改字段?例如,在设计视图中...... validate_doc_update:

function(newDoc, oldDoc, userCtx) {
}

在该函数中,我可以抛出错误:

if(!newDoc.user_email && !newDoc.user_name && !newDoc.user_password){
    throw({forbidden : 'all fields required'});
}

我的问题是如何重新分配一个字段?我试过这个:

newDoc.user_password ="changed";

更改了一些新值或散列值。我的总体目标是使用node和couchdb构建用户注册/登录系统,但没有找到很好的例子。

1 个答案:

答案 0 :(得分:1)

validate_doc_update功能不会产生任何副作用,并且在存储之前无法更改文档。它只能阻止更新或让它通过。这很重要,因为该函数不仅在用户请求更新时调用,而且还在从一个CouchDB实例复制到另一个CouchDB实例时调用。因此,对于一个文档,可以多次调用该函数。

但是,CouchDB现在支持可以修改文档甚至从头开始构建文档的文档更新处理程序。这些可用于将非JSON输入数据转换为可用文档。您可以在CouchDB Wiki中找到一些文档。

在您构建自己的用户注册/登录系统之前,我建议您查看内置的CouchDB安全功能(如果您还没有 - 某些信息here)。它们可能对您不够(例如,如果您需要电子邮件验证或类似的东西),但也许您可以在它们的基础上进行构建。