我正在尝试使用 mssql 包建立连接并返回池。
const sqlConfig = {
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_CATALOG,
server: process.env.SERVER_HOST
}
export async function connect(){
try{
const pool = await sql.connect(sqlConfig)
return pool
}catch(err){
throw err
}
}
但是,在返回池时,我收到以下 lint 错误:Type 'Promise<ConnectionPool> & void' is missing the following properties from type 'ConnectionPool': connected, connecting, healthy, driver, and 26 more.
我应该如何重写代码以将池返回为 ConnectionPool 而不是 Promise<ConnectionPool> & void?
作为参考,这里是完整的代码:
import sql, { ConnectionPool } from "mssql"
require('dotenv').config()
const sqlConfig = {
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_CATALOG,
server: process.env.SERVER_HOST
}
export async function connect():Promise<ConnectionPool>{
try{
const pool = await sql.connect(sqlConfig)
return pool
}catch(err){
throw err
}
}
我尝试将变量转换为 ConnectionPool 并明确写入预期的返回值,如下所示:
export async function connect():Promise<ConnectionPool>{
try{
const pool = await sql.connect(sqlConfig)
return pool as ConnectionPool
}catch(err){
throw err
}
}
尽管是较旧的帖子,但我还尝试向从https://github.com/tediousjs/node-mssql/issues/1063获取的 @types/mssql 包添加重载。
您正在等待承诺将返回值视为 ConnectionPool 对象而不是承诺。
如果您希望连接返回连接池,请将您的返回类型更改为 ConnectionPool,如果您仍然希望它返回一个承诺,请删除如下所示的等待并使用等待调用您的连接函数
export async function connect():Promise<ConnectionPool>{
return sql.connect(sqlConfig);
}catch(err){
throw err
}
}
然后用await connect()
or调用它
connect().then( (pool ) => {
// Do something with pool here
}
我建议 .then 而不是 await
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句