以下文档是一个存储在CouchDB中的小例子。
{
"_id": "Test4",
"referenceName": "refA",
"positions": {
"A": 422,
"B": 5442
},
"properties": [
{
"tId": "ARQ3TPR7",
"pos": 4609,
"zIds": [
"z0003674",
"z0008150",
"z0016020",
"z0016021"
]
}
],
...
}
以下地图功能不起作用,我不知道如何修复它。我得到了Error: compilation_error Expression does not eval to a function
。我想要检索_id
,referenceName
和positions
。
{
"_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/_design/doc/_view/by_zIds?key="z0016021"
之类的视图?
答案 0 :(得分:1)
地图功能)
后有properties
个缺失。可能还有其他错别字。我建议你在一个带有语法高亮的编辑器中编写你的地图函数,然后在本地编写你的地图函数,以便尽早发现这些错误。
编辑:您的地图功能还有其他一些问题,所有问题都可以通过单元测试和/或调试找到。这应该有效,但我还没有测试过:
function(doc) {
for (var d in doc.properties) {
for (var x in d.zIds) {
emit(x, doc);
}
}
}
答案 1 :(得分:0)
我用以下方式解决了它,但我不确定它是否是最好的方法
function(doc) {
for (var i in doc.properties) {
for (var x in doc.properties[i].zIds) {
emit(doc.properties[i].zIds[x], doc);
}
}
}
是否有可能改善?