2017-02-13 42 views
4

异步等待当我运行这个(与--harmony使用节点V7.5.0):如何使用与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关键字处于异步功能。

+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