Javascript Couchdb在数组中检索文档
以下文档是存储在CouchDB中的一个小示例Javascript Couchdb在数组中检索文档,javascript,mapreduce,couchdb,Javascript,Mapreduce,Couchdb,以下文档是存储在CouchDB中的一个小示例 { "_id": "Test4", "referenceName": "refA", "positions": { "A": 422, "B": 5442 }, "properties": [ { "tId": "ARQ3TPR7", "pos": 4609, "zIds": [ "z0003674",
{
"_id": "Test4",
"referenceName": "refA",
"positions": {
"A": 422,
"B": 5442
},
"properties": [
{
"tId": "ARQ3TPR7",
"pos": 4609,
"zIds": [
"z0003674",
"z0008150",
"z0016020",
"z0016021"
]
}
],
...
}
下面的映射函数不起作用,我不知道如何修复它。我得到了
错误:编译\u错误表达式不求值到函数
。我想检索\u id
,referenceName
和位置
{
"_id": "_design/doc",
"views": {
"by_zIds": {
"map": "function(doc) {
for (var i in properties {
var d = doc.properties[i];
for (var x in d.zIds){
emit(d.zIds[x], doc);
}
}
}"
}
},
"language": "javascript"
}
如何修复上述映射函数,以便在映射函数中的属性
后使用类似/dbname/\u design/doc/\u view/by\u zIds?key=“z0016021”
?的视图。可能还有其他打字错误。我建议您在编辑器中编写map函数,并在本地突出显示语法,以便尽早捕获此类错误
编辑:map函数还有其他几个问题,所有这些问题都可以通过单元测试和/或调试找到。这应该行得通,但我还没有测试过:
function(doc) {
for (var d in doc.properties) {
for (var x in d.zIds) {
emit(x, doc);
}
}
}
我用下面的方法解决了这个问题,但我不确定这是否是最好的方法
function(doc) {
for (var i in doc.properties) {
for (var x in doc.properties[i].zIds) {
emit(doc.properties[i].zIds[x], doc);
}
}
}
有可能改进吗?请提供有关地图功能不起作用的更多信息。您希望看到什么结果?实际发生了什么?我得到了
错误:编译\u错误表达式不会对函数求值。我只想检索\u id、referenceName和positions
。谢谢,缺少)
,但视图找不到任何内容。原因可能是什么?@user977828:我编辑了这个问题以回答您的问题谢谢。还是什么也没找到。调试map函数的最佳方法是什么?