Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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 TypeError[ERR_INVALID_ARG_TYPE]:该;“原件”;参数必须是function类型。接收未定义_Node.js_Sql Server - Fatal编程技术网

Node.js TypeError[ERR_INVALID_ARG_TYPE]:该;“原件”;参数必须是function类型。接收未定义

Node.js TypeError[ERR_INVALID_ARG_TYPE]:该;“原件”;参数必须是function类型。接收未定义,node.js,sql-server,Node.js,Sql Server,我正试图保证我的mysql池连接,这样我就可以使用wait关键字 const sql = require('mssql/msnodesqlv8'); const keys = require('../config/keys'); const util = require('util') //Need this package for windows authentication require('msnodesqlv8'); let config; console.log(keys) if

我正试图保证我的mysql池连接,这样我就可以使用
wait
关键字

const sql = require('mssql/msnodesqlv8');
const keys = require('../config/keys');
const util = require('util')

//Need this package for windows authentication
require('msnodesqlv8');


let config;
console.log(keys)
if (keys.db.state.toLowerCase() == "dev") {
    config = {
        user: keys.db.dev_user,
        password: keys.db.dev_password,
        server: keys.db.dev_server, // You can use 'localhost\\instance' to connect to named instance
        database: keys.db.dev_database,
        // driver:'msnodesqlv8',
        pool: {
            max: 10,
            min: 5,
            idleTimeoutMillis: 30000
        },
        options: {
            encrypt: false,
            instanceName: keys.db.dev_instanceName,
            enableArithAbort: true
        },
        //  port:57909,
        enableArithAbort: false
    }
} 

console.log(config)

let pool = new sql.ConnectionPool(config).connect()
    .then(query => {
        return query
    })
    .catch(e => console.error("Database Trouble!  ", e))

pool.query = util.promisify(pool.query)

module.exports = pool;
但我得到了一个错误:

TypeError[错误\无效\参数\类型]:“原始”参数必须为 类型函数。接收未定义

我不明白在连接后返回查询时,我们是如何接收到undefined的。

为什么util.promisify()方法失败了? pool变量是一个挂起的承诺。因此,在承诺得到解决之前,pool.query是未定义的

如何使用等待? 由于connect()方法返回一个承诺,您已经可以了。您需要解析connect承诺,然后pool将有一个query()方法,该方法也会返回一个承诺

例如:

。。。
constpool=newsql.ConnectionPool(配置);
(异步函数(){
等待池。连接();
const result=await pool.query('A query HERE');
})()