gpt4 book ai didi

node.js - 如何使用util的promisify函数来promisify mongoDB?

转载 作者:太空宇宙 更新时间:2023-11-03 23:01:07 25 4
gpt4 key购买 nike

我想将 promisify 与 MongoDB 一起使用。我最后尝试了代码,连接正常,但函数 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 驱动程序已返回 promise (请参阅 documentation )。您不需要使用util.promisify。此外,您不会在 insertOne 等查询上链接 dbcollection。恰恰相反。

例如:

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

(注意,如果您使用旧的 mongodb Node 驱动程序版本 2.2,则略有不同,因为 connect 返回一个数据库对象 - documentation for 2.2 )

关于node.js - 如何使用util的promisify函数来promisify mongoDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47966303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com