在Map-Function中检索单独文档时出现问题

时间:2017-08-14 21:18:44

标签: javascript map-function

我写了一个小函数来根据用户可以制作的两个搜索词获得结果。这些术语是:owner & path文件夹。

到目前为止,下面的地图功能可以在用户查找bob&时返回正确的文件夹。 holiday。 不幸的是,elfe if部分不起作用,我想要检索文件文档。如果我将两个if分开,一切正常。为什么不组合? : - )

地图-功能:

function(doc) {
    if (doc.type == 'folder') {
      emit([doc.owner, doc.path], null);
    } else if (doc.files) {    
    for (var i in doc.files) {
          emit(doc.owner, {_id: doc.files[i]});
      } 
  }
}

文件:

// Folder
{
  "_id": "folder.abc",
  "name": "Holiday",
  "type": "folder",
  "owner": "bob",
  "path": "\\holiday",
  "files": [
    "file.123"
    ]
}

// Files
{
  "_id": "file.123",
  "name": "Hawaii.jpg",
  "type": "file",
}

搜索查询:

[Snip]?key=["bob","\\holiday"]&include_docs=true

结果:

{
    "total_rows":4,
    "offset":2,
    "rows":[
        {
            "id":"folder.abc",
            "key":[
                "bob",
                "\\holiday"
            ],
            "value":null,
            "doc":{
                "_id":"folder.abc",
                "name":"Holiday",
                "type":"folder",
                "owner":"bob",
                "path":"\\holiday",
                "files":[
                    "file.123"
                ]
            }
        }
    ]
}

1 个答案:

答案 0 :(得分:0)

  

不幸的是elfe如果部分不起作用,我想要检索文件文件。如果我将两者分开,如果一切正常。为什么不组合? : - )

这不起作用,因为JavaScript没有elseif关键字。使用else if相当于:

if (doc.type === 'folder') {
    ...
} else {
    if (doc.files) {
        ...
    }
}

请参阅:MDN if...else