Ich habe ein Schema, das Cat-Informationen speichert. Ich möchte dann ein Array aller cat_urls schaffen, aber wenn ich das Array außerhalb des dbs Anruf nennen, das Array leerWarum wird die Array-Variable nach dem dbs-Aufruf nicht gespeichert - Knoten js
var cat_urls = [];
Cat.find(function (err, data) {
var stringify = JSON.stringify(data)
content = JSON.parse(stringify);
content.forEach(function (result) {
cat_urls.push(result.cat_url);
})
console.log(cat_urls, 'here')
})
console.log(cat_urls, 'here not working') // I want cat_urls to also be populated here
So Innerhalb der Cat.find() -Aufruf cat_urls Werte wie folgt hat:
[ 'www.hello.co.uk', 'www.testing.co.uk' ] 'here'
aber außerhalb cat_urls = []
ich denke, dies mit der Tatsache zu tun, ist, dass der Knoten js nicht in einer bestimmten Reihenfolge läuft, aber wie kann ich lösen dieses Problem?
Aber das Ziel ist in der Lage sein, diese außerhalb dieser Funktion aufzurufen - mit dem Array gefüllt werden, anstatt leere –
@emisqwe Leider Art von Versprechungen sind, so dass sie gelöst werden müssen bevor Sie garantieren können, dass globale Variablen gesetzt sind. Wenn Sie bestimmte Funktionen ausführen müssen, können Sie sie in die Funktion innerhalb der Anweisung '.then (function() {})' einschließen oder sogar andere Funktionen innerhalb dieser Anweisung aufrufen. Hier ist ein Artikel, der Ihnen helfen kann, sich mit Versprechungen und deren Funktionsweise in Mongoose vertraut zu machen http://mongoosejs.com/docs/promises.html. – Mike