2017-02-13 4 views
4

Wenn ich diese (unter Verwendung von Knoten v7.5.0 mit --harmony) laufen:Wie kann ich mit Asynchron-warten mit MongoClient

var MongoClient = require('mongodb').MongoClient, 
var url = "mongodb://localhost:27017/myDB"; 

var test = await MongoClient.connect(url); 
module.exports = test; 

ich diesen Fehler:

var test = await MongoClient.connect(url); 
      ^^^^^^^^^^^ 
SyntaxError: Unexpected identifier 

MongoClient.connect (url) gibt ein Versprechen zurück

Was ich letztlich erreichen möchte, ist ein Knotenmodul zu erstellen, das eine Verbindung zu einer MondoDB herstellen wird und wie im folgenden Beispiel verwendbar sein wird:

var db = require('../utils/db'); //<-- this is what I want to create above 
col = db.collection('myCollection'); 

module.exports.create = async fuction(data) { 
    return await col.insertOne(data); 
} 

Irgendwelche Vorschläge?

Antwort

1

Ist Ihr Modul Wrapper auch eine asynchrone Funktion? Sie müssen das Schlüsselwort await in einer asynchronen Funktion haben.

+0

Nein! Ich realisierte kurz bevor ich deine Antwort las. Aber ich denke, das beantwortet trotzdem meine anfängliche Frage nach dem 'unerwarteten Bezeichner' Fehler, also werde ich akzeptieren, ist die richtige Antwort. Aber ich habe immer noch nicht herausgefunden, wie man das in ein Modul packt, das ich schön und sauber von anderen Modulen verwenden kann. – balafi

4

Wie wäre es mit einer asynchronen Funktion?

var MongoClient = require('mongodb').MongoClient, 
var url = "mongodb://localhost:27017/myDB"; 

var test = async function() { 
    return await MongoClient.connect(url); 
} 

module.exports = test; 
+1

Hier wird erklärt, wie das Modul geschrieben wird, aber nicht, wie die exportierte Datenbankverbindung verwendet wird. – Carasel

+0

@Carasel - Etwas in der Art von 'const test = require (' test '); const db = test(); ' – toszter

Verwandte Themen