如何使用util的promisify函数来宣传mongoDB?

问题描述 投票:1回答:1

我想在MongoDB中使用promisify。我最后尝试了代码,连接正常,但函数insertOne没有。任何人都可以帮我吗?最好用'.db()。collection()'来解释原因,以及什么是上下文,我应该如何使用以下代码使函数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()
node.js mongodb es6-promise
1个回答
2
投票

MongoDB驱动程序已经返回promises(参见documentation)。你不需要使用util.promisify。另外,你不要在像db这样的查询上链接collectioninsertOne。反过来说。

例如:

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

(注意,如果你使用旧的mongodb节点驱动程序版本2.2,它会稍微不同,因为connect返回一个db对象 - documentation for 2.2

© www.soinside.com 2019 - 2024. All rights reserved.