Couchdb 使用设计文档向列表中添加元素

Couchdb 使用设计文档向列表中添加元素,couchdb,Couchdb,用户可以在我的网站上按一个按钮来申报对课程的兴趣。对于每门课程,我的CouchDB安装中都有一个文档。这些文档如下所示: { "_id": "...", "_rev": "...", "name": "...", "description": "...", "userList": [] } 当用户按下按钮时,其姓名应添加到“用户列表”中。我为此编写了一份设计文档: { "_id": "_design/updateList", "_rev": "...", "up

用户可以在我的网站上按一个按钮来申报对课程的兴趣。对于每门课程,我的CouchDB安装中都有一个文档。这些文档如下所示:

{
  "_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