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

関連する問題