最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 2浏览 0评论

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

我想在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()
回答如下:

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)

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

我想在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()
回答如下:

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)

发布评论

评论列表 (0)

  1. 暂无评论