2017-12-25 14 views
1

私はpromisifyをMongoDBと使いたいです。私は最後にコードを試して、接続はOKですが、関数insertOneはありません。誰か助けてくれますか?そして、理由を説明した方がよい、と「.DB()コレクション()。」で、どのように私は次のようなコードで関数promisifyをしなければならない状況です:utilのpromisify関数を使ってmongoDBをどのように宣言するのですか?

a().b().c().d() 

とここに私のコードですが蛇腹のように。

import "babel-polyfill" 
const mongoClient = require('mongodb').MongoClient 
const util = require('util') 
const chalk = require('chalk') 

const url = 'mongodb://localhost:27017' 
const dbName = '' 
const collName = '' 

let connect = util.promisify(mongoClient.connect).bind(mongoClient) 
let insertOne = util.promisify(mongoClient.insertOne) 
       .bind(mongoClient) 

const main = async() => { 
    try { 
     await connect(url) 
     insertOne({a100: 1}).db(dbName).collection(collName) 
    } catch (err) { 
     console.log(chalk.red(err.toString())) 
    } 

    mongoClient.close() 
}  

main() 

答えて

2

MongoDBドライバはすでに約束を返します(documentationを参照)。 util.promisifyを使用する必要はありません。また、insertOneのようなクエリにはdbcollectionをチェーンしないでください。それはもう一方の方法です。例えば

client = await mongoClient.connect(url) 
client.db(dbName).collection(collName).insertOne({a100: 1}) 

(古いのMongoDBノードドライバのバージョン2.2を使用している場合、接続はDBオブジェクトを返すようNBが、それは少し違う - documentation for 2.2)を

関連する問題