Javascript 通过传递参数查询Couchbase视图
我有以下格式的Couchbase通知文档:Javascript 通过传递参数查询Couchbase视图,javascript,couchbase,couchbase-view,Javascript,Couchbase,Couchbase View,我有以下格式的Couchbase通知文档: { "_id":"notification::5403cb1a6c965dcfe9", "alert":"test data", "body":{ "created_by":"user_54986e326694f10e511cf", "description":" reported ", }, "channels":[ "user_54986e326694f10e
{
"_id":"notification::5403cb1a6c965dcfe9",
"alert":"test data",
"body":{
"created_by":"user_54986e326694f10e511cf",
"description":" reported ",
},
"channels":[
"user_54986e326694f10e511cf",
"user_54986e326694f10e511cp"
],
"notification_type":"new_report",
"seen":true,
"timestamp":"2015-01-06T15:48:25.092Z",
"type":"notification"
}
JSON文档包含频道
数组,它是订阅频道的用户id
列表。问题是,如果通道字段包含user\u id
,如果我将user\u id='user\u 54986e326694f10e511cf'作为关键参数传递,我必须发出通知文档
下面是我的Couchbase视图地图函数,但它不返回任何内容
function (doc, meta) {
if(doc.type=='notification' && doc.channels){
for (var user in doc.channels) {
emit(user, {
alert: doc.alert,
body: doc.body,
seen: doc.seen,
timestamp: doc.timestamp
});
}
}
}
我想知道我哪里做错了。那些你在字典中作为键发出的“警报”、“身体”、“被看见”等,是那些字符串吗?如果是这样的话,它们不应该被引用吗
换句话说,请尝试以下方法:
function (doc, meta) {
if(doc.type=='notification' && doc.channels){
for (var user in doc.channels) {
emit(user, {
"alert": doc.alert,
"body": doc.body,
"seen": doc.seen,
"timestamp": doc.timestamp
});
}
}
}
我试过这个,但仍然得到{“total_rows”:225784,“rows”:[]}让我们把它分解成几部分。你应该首先确保你的函数运行良好——这意味着它会输出一些东西。只有在以后,您才应该使用查询来限制该输出。我建议您使用couchbase web UI查看视图的结果(而不是代码)。你从中得到了什么输出?应该有一个链接,可以在另一个选项卡中打开查看结果,并在默认情况下打印出10个结果。你们看到了什么?我使用的是couchbase web UI,当我运行这个查询时并没有任何键参数,它会给出结果,然后我使用结果集中的键并尝试再次运行,它会给出{“total_rows”:225784,“rows”:[]}你们能提供一个输出示例吗?从视图的结果中只剩下一两行?我没有使用任何键时的结果:-{“总计行”:220,“行”:[{“id”:“通知::53aef3f78cb80cdb602”,“键”:“0”,“值”:{“警报”:“smeagol在演示所有管理器中报告了“热”,“正文”:{“创建人”:“用户”52ca436db68ec76a33a26bc5”,“说明”:“报告”,“summary”:“hot”,“username”:“smel”},“channels”:[“user_53a06ba16694f16de1b9cb21],“seen”:false}}}}}当我使用键用户_53a06ba16694f16de1b9cb21时,结果:-{“total_rows”:225784,“rows”:[]}