Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Couchdb在数组中检索文档_Javascript_Mapreduce_Couchdb - Fatal编程技术网

Javascript 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",

以下文档是存储在CouchDB中的一个小示例

{
  "_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函数的最佳方法是什么?