2017-12-25 18 views
1

MongoDB와 promisify를 사용하고 싶습니다. 나는 코드를 마침내 시도하지만, 연결은 정상이지만 함수 insertOne은 아니다. 아무도 나를 도울 수 있습니까? 그리고 이유를 설명하는 것이 더 좋습니다, 그리고와 상황에 맞는 것입니다 내가 좋아하는 코드와 함수 promisify 만드는 방법, '.DB는() 컬렉션().'util의 promisify 함수를 사용하여 mongoDB를 어떻게 promisify 할 수 있습니까?

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

(NB 당신은 이전 MongoDB의 노드 드라이버 버전 2.2을 사용하는 경우 연결이 DB 객체를 반환으로 약간 다르다 - documentation for 2.2)