2017-08-14 96 views
0

我已经编写了一个基于用户可以制作的两个搜索词获取结果的小函数。条款是:文件夹的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" 
       ] 
      } 
     } 
    ] 
} 

回答

0

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

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

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

见:MDN if...else