mysql - NodeJS / MariaDB 连接器——createConnection() 没有返回正确的连接对象
问题描述
Node.js 在我的 Ubuntu 18/04 机器上安装在以下版本中:
node -v
v14.16.0
安装了以下模块:
sudo npm list -g --depth=0
/usr/lib
├── mariadb@2.5.3
└── npm@6.14.11
所需的包
我的应用程序文件 maria.js 中的相关代码如下所示:
const mariadb = require('mariadb');
let conn = mariadb.createConnection({
host: 'localhost',
database: 'db1',
user:'dbuser1',
password: 'dbpwd',
port: 3306
});
conn.connect(function(err){
if(err){
console.log('Database connection error');
}else{
console.log('Database connection successful');
}
});
满足所需的包“mariadb”并且 createConnection() 不返回错误。然而,进入 connect() 语句,NodeJS 返回以下内容:
conn.connect(function(err){
^
TypeError: conn.connect is not a function
at Object.<anonymous> (/home/juerg/bin/node/maria.js:12:6)
所以看起来 createConnection() 返回一个空的 JS 对象。任何其他 Connection 类方法也不起作用,而且我无法在这个短代码片段中发现错误。
解决方案
mariadb.createConnection
返回一个承诺,因此您必须await
让它返回连接,例如:
let conn = await mariadb.createConnection({
host: 'localhost',
database: 'db1',
user:'dbuser1',
password: 'dbpwd',
port: 3306
});
也可能不需要conn.connect()
单独调用,因为它已经完成createConnection
:源代码
或者,如果您不想使函数异步,那么您可以执行以下操作:
mariadb.createConnection({
host: 'localhost',
database: 'db1',
user:'dbuser1',
password: 'dbpwd',
port: 3306
}).then((conn) => {
// Do here what you want to do with MySQL connection...
});
推荐阅读
- javascript - 如果 xAxis 打勾,Highchart 数据标签会出现在中间
- python - 将 sklearn 预测导出到 CSV 文件
- actionscript-3 - 如何计算每个呈指数增长的数字的总和?
- git - GitLab 通过 SSH 克隆总是提示输入密码
- r - Blogdown 网站只能在本地运行,不能通过 neltify
- javascript - JQuery:可见选择器没有给出正确的输出
- typo3 - TYPO3 不允许登录
- java - 集线器已关闭或没有响应:用户代理值 23 处的意外字符 0x131:selenium/3.14.0 (java w²ndows) with SeleniumGrid v3.14.0
- android - Android Studio ADB错误10061通过wifi连接
- android-studio - 安装 Google Play Instant Development SDK(修订版:1.5.0)失败