Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用util';什么是承诺功能?_Node.js_Mongodb_Es6 Promise - Fatal编程技术网

Node.js 如何使用util';什么是承诺功能?

Node.js 如何使用util';什么是承诺功能?,node.js,mongodb,es6-promise,Node.js,Mongodb,Es6 Promise,我想和MongoDB一起使用promisify。我最后尝试了代码,连接正常,但函数insertOne不正常。有人能帮我吗?最好解释一下为什么,以及使用“.db().collection()”时的上下文是什么,我应该如何使用如下代码使函数promisify: a().b().c().d() 这是我的代码,比如贝娄 import "babel-polyfill" const mongoClient = require('mongodb').MongoClient const util = requ

我想和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驱动程序已经返回承诺(请参阅)。您不需要使用
util.promisify
。此外,在诸如
insertOne
之类的查询中,您不会链接
db
collection
。相反

例如:

 client = await mongoClient.connect(url)
 client.db(dbName).collection(collName).insertOne({a100: 1})
(注意,如果您使用的是旧的mongodb节点驱动程序版本2.2,则会略有不同,因为connect返回一个db对象-)