2017-12-07 1 views
2

ich eine ArangoDB Funktion haben, die alle documents im instanceCollection abfragt, innen databasehelper.js:Wie man einen Wert aus einer Funktion zurück

listInstances = function listInstances() { 
    var instances = db.query(aqlQuery` 
    FOR doc in instanceCollection 
    RETURN doc 
    `).then(
     cursor => cursor.all() 
    ).then(
     result => { 
      return result; 
     } 
    ) 
    return instances; 
} 

Außerdem möchte ich diese Funktion verwenden, um die JSON-Abfrage eine widerzuspiegeln Express API:

app.get('/', function(req, res) { 
    var allInstances = databasehelper.listInstances(); 
    res.send(allInstances); 
}); 

Die api Ergebnis war nichts anderes als ein leeres JSON {}. Wie kann ich das Ergebnis meiner ArangoDB-Abfrage für meinen Express-API-Aufruf angeben?

Antwort

3

Verstehen, wie Versprechen funktionieren. Das Folgende ist eine Idee, wie es gestaltet werden sollte.

databasehelper.js => Zurück ein Versprechen

listInstances = function listInstances() { 
    return db.query(`some query`) 
    .then(cursor => cursor.all()) 
} 

in der Route, => die Daten aus dem Versprechen holen

app.get('/', function(req, res) { 
    databasehelper.listInstances() 
    .then(result => { 
     res.send(result); 
    }) 
}); 
+0

Es funktioniert! Ich danke dir sehr! –

Verwandte Themen