Couchdb 使用设计文档向列表中添加元素
用户可以在我的网站上按一个按钮来申报对课程的兴趣。对于每门课程,我的CouchDB安装中都有一个文档。这些文档如下所示:Couchdb 使用设计文档向列表中添加元素,couchdb,Couchdb,用户可以在我的网站上按一个按钮来申报对课程的兴趣。对于每门课程,我的CouchDB安装中都有一个文档。这些文档如下所示: { "_id": "...", "_rev": "...", "name": "...", "description": "...", "userList": [] } 当用户按下按钮时,其姓名应添加到“用户列表”中。我为此编写了一份设计文档: { "_id": "_design/updateList", "_rev": "...", "up
{
"_id": "...",
"_rev": "...",
"name": "...",
"description": "...",
"userList": []
}
当用户按下按钮时,其姓名应添加到“用户列表”中。我为此编写了一份设计文档:
{
"_id": "_design/updateList",
"_rev": "...",
"updates": {
"addUser": "function(doc, req) {doc['userList'] = req['name']; var message = 'user added'; return [doc, message];}",
}
}
我知道这不可能是正确的解决方案,因为列表不能像这样超过一个用户名。然而,即使这样也不行。当我按下按钮时,相应文档中的“userList”:[]行消失
这里有什么问题?我在沙发上使用PHP来运行设计文档,但我的PHP代码中应该没有任何问题。我在CouchDB日志中看到CouchDB很好地接收到用户名。直接的问题是a没有名为“name”的字段,因此: 相当于:
doc['userList'] = undefined
如果用户已登录,您可能打算直接使用req.userCtx.name
,如果您已将其作为参数添加,则可能打算使用req.query.name
更一般地说,您可能想将它们的名称添加到数组中,如果类注册量不是很高,那么这样做可能没问题。另一种方法是为每个用户+类生成一个独立的文档,并依靠视图对其进行计数
doc['userList'] = undefined