2017-02-13 2 views
4

Когда я запускаю этот (с помощью v7.5.0 узла с --harmony):Как я могу использовать асинхронный ждет с MongoClient

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

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

Я получаю эту ошибку:

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

MongoClient.connect (URL) делает обещание вернуть

То, что я в конечном счете хочу добиться того, чтобы создать модуль узла, который будет подключаться к mondoDB и будет использоваться, как в следующем примере:

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); 
} 

Любые предложения?

ответ

1

Является ли ваша оболочка модуля асинхронной функцией? Для ключевого слова await необходимо использовать функцию async.

+0

Нет! Я понял незадолго до того, как прочитал ваш ответ. Но я думаю, что это в любом случае отвечает на мой первоначальный вопрос об ошибке «неожиданного идентификатора», поэтому я буду принимать правильный ответ. Но я до сих пор не понял, как упаковать это в модуль, который я могу использовать в чистом и чистом виде из других модулей. – balafi

4

Как обернуть его в асинхронную функцию?

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

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

module.exports = test; 
+1

Это объясняет, как написать модуль, но не как использовать экспортированное соединение с базой данных. – Carasel

+0

@Carasel - Что-то по строкам 'const test = require ('test'); const db = test(); ' – toszter

Смежные вопросы