CouchDB-使用设计文档将元素添加到列表中

问题描述 投票:2回答:1

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

{
  "_id": "...",
  "_rev": "...",
  "name": "...",
  "description": "...",
  "userList": []
}

[当用户按下按钮时,他的名字应该添加到“ userList”。我为此写了一份设计文件:

{
  "_id": "_design/updateList",
  "_rev": "...",
  "updates": {
     "addUser": "function(doc, req) {doc['userList'] = req['name']; var message = 'user added'; return [doc, message];}",
  }
} 

我知道这不是正确的解决方案,因为列表永远不能超过一个这样的用户名。但是,那甚至行不通。当我按下按钮时,行““ userList”:[]”从相应的文档中消失。

这里有什么问题?我使用PHP-On-Couch运行设计文档,但是我的PHP代码应该没有任何问题。我在CouchDB日志中看到CouchDB接收用户名就很好。

最诚挚的问候

couchdb
1个回答
0
投票

直接的问题是,req object没有名为“ name”的字段,因此:

doc['userList'] = req['name']

等效于:

doc['userList'] = undefined

[如果您已登录,则可能直接使用userCtx req.userCtx.name;如果已将其添加为参数,则可能是req.query.name

[更一般而言,您可能打算将其名称推送到数组上,如果类注册量不是很高,可能很好。另一种方法是为每个用户+类生成一个独立的文档,并依靠视图对其进行计数。

© www.soinside.com 2019 - 2024. All rights reserved.