Ich habe eine kleine Funktion geschrieben, um Ergebnisse basierend auf zwei Suchbegriffen zu erhalten, die ein Benutzer machen kann. Die Begriffe sind: owner & path
eines Ordners.Probleme beim Abrufen eines separaten Dokuments in Map-Funktion
Die Kartenfunktion unten funktioniert so weit, dass es mir den richtigen Ordner zurückgibt, wenn ein Benutzer nach bob
& holiday
sucht. Leider funktioniert der elfe if
Teil nicht, wo ich das Dateidokument abrufen möchte. Wenn ich beide getrennt if
s alles funktioniert. Warum nicht in Kombination? :-)
Map-Funktion:
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]});
}
}
}
Dokumente:
// Folder
{
"_id": "folder.abc",
"name": "Holiday",
"type": "folder",
"owner": "bob",
"path": "\\holiday",
"files": [
"file.123"
]
}
// Files
{
"_id": "file.123",
"name": "Hawaii.jpg",
"type": "file",
}
Suchanfrage:
[Snip]?key=["bob","\\holiday"]&include_docs=true
Ergebnis:
{
"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"
]
}
}
]
}