2017-05-23 3 views
0

Ich versuche eine Website zu erstellen, wo ich Fragen stellen und beantworten kann. Um dies zu tun, habe ich zwei Dateien, eine, die die Frage an die Datenbank sendet, und die andere, die die Anlage von jedem docs, in dem die Frage ist, ausgibt.Erhalten Sie PouchDB Anhang?

Post.js:

db.post({ 
    title: 'question' 
}).then(function (response) { 
    console.log(response) 
    q = response 
}).catch(function (err) { 
    console.log(err); 
}); 

await sleep(100) 
console.log(q.rev) 

var attachment = new Blob([{ 
    "title" : title, 
    "content" : content, 
    "option" : option, 
    "spec" : spécialisation, 
    "year" : year, 
    "date" : date}, {type: 'text/json'}]); 
db.putAttachment(q.id.toString(),'qData', q.rev.toString(), attachment, 'text/json') 
.then(function (result) { 
    console.log(result) 
}) 
.catch(function (err) { 
    console.log(err); 
}); 

Und view.js:

var all = db.allDocs({ 
}).then(function (result) { 
    console.log(JSON.stringify(result.rows)) 
    return result.rows 
}).catch(function (err) { 
    console.log(err); 
}); 

Aber ich kann es nicht zu arbeiten, gibt es keine Fehler und die einzelnen ouput, die ich erhalte a Doc ohne Anhang. Was ist mein (wahrscheinlich neuerlicher) Fehler?

Antwort

2

Versuchen Sie folgende Optionen zu Ihrem allDocs Anruf hinzuzufügen:

options.include_docs: Fügen Sie die sich im doc Feld in jeder Zeile Dokument

{ 
    include_docs: true, 
    attachments: true 
} 

die docs auf diese beiden Optionen Zitiert. Ansonsten erhalten Sie standardmäßig nur die Eigenschaften _id und _rev .

options.attachments: Fügen Sie Anhangdaten als base64-codierte Zeichenfolge ein.

docs haben ein vollständiges Beispiel, die Ihre Anlagen als base64 String zurückgeben sollte:

db.allDocs({ 
    include_docs: true, 
    attachments: true 
}).then(function (result) { 
    // handle result 
}).catch(function (err) { 
    console.log(err); 
}); 

Hinweis: Ich sehe Ihre Arbeit mit Blobs. Werfen Sie einen Blick auf diese Option, wenn Sie nicht Ihre Anlagen als Blob als eine Base64-String bekommen würde:

options.binary: Return Anlagedaten als Blobs/Puffer, statt als base64-kodierten Strings.