用户可以按我网站上的按钮来声明对课程的兴趣。对于每门课程,我的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接收用户名就很好。
最诚挚的问候
直接的问题是,req object没有名为“ name”的字段,因此:
doc['userList'] = req['name']
等效于:
doc['userList'] = undefined
[如果您已登录,则可能直接使用userCtx req.userCtx.name
;如果已将其添加为参数,则可能是req.query.name
。
[更一般而言,您可能打算将其名称推送到数组上,如果类注册量不是很高,可能很好。另一种方法是为每个用户+类生成一个独立的文档,并依靠视图对其进行计数。