2017-02-13 21 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