我正在使用以下格式存储的couchbase报告文档:
{
"agree_allowed":true,
"assigned_by":"",
"assigned_to":"",
"closed":[
],
"comments_allowed":true,
"details":"Test",
"email":"",
"status":"In Progress",
"subscribed":{
"user_cfd29b81f0263a380507":true,
"user_cfd29b81f0263a380508":true,
"user_cfd29b81f0263a380509":true,
"user_cfd29b81f0263a3805010":true
},
"summary":"Test",
"time_open":0,
"timestamp":"2015-07-17T15:34:30.864Z",
"type":"report",
"user_id":"user_cfd29b81f0263a380507",
"username":"test17"
}
json包含订阅的文件,它是跟踪报告的user_id列表。 问题是,如果订阅字段包含user_id,我必须发出报告文档,如果我通过 user_id =' user_cfd29b81f0263a380507 '传递为关键参数。我想知道如何使用 user_id 在视图中进行比较
这是我写的代码: -
function map(doc, meta) {
if (doc.type == 'report' && doc.subscribed) {
for (var user_id in doc.subscribed) {
emit(doc.user_id, doc);
}
}
}
但它没有返回预期的结果。 任何人都可以提供帮助。
答案 0 :(得分:1)
如果我理解您的问题,我认为您希望能够查询已订阅的用户。
如果是这种情况,则视图代码是错误的,它提交doc.user_id
而不是user_id
,这是您在循环中为值分配但从不使用的变量。无论如何,我认为最好使用不同的名称来避免混淆。
function map(doc, meta) {
if (doc.type == 'report' && doc.subscribed) {
for (var subscriber in doc.subscribed) {
emit(subscriber);
}
}
}
要查询已订阅的用户,请使用key=user_cfd29b81f0263a380507
。结果将是:
{
"total_rows": 4,
"rows": [
{
"id": "docs",
"key": "user_cfd29b81f0263a380507",
"value": null
}
]
}