javascript - Node.js 使用 mssql 访问数据库
问题描述
我正在制作 Meteor.js 应用程序,我必须从 mssql 数据库中获取数据。我使用 Meteor 1.8 和一个 npm 包 - mssql(版本 5.1.0)。那是我的代码:
const sql = require('mssql')
const config = {something}
export default function fetch(query) {
const config = {something}
sql.connect(config, err => {
if (err) {
console.error(err)
return
}
// create Request object
var request = new sql.Request()
// query to the database and get the records
request.query(query, (err, recordset) => {
if (err) {
console.error(err)
return
}
return recordset
})
})
}
我有这样的错误
TypeError: sql.connect 不是函数
我不知道发生了什么,我尝试了很多方法,但都失败了。当我使用ConnectionPool时,我看到一个错误,指出 ConnectionPool 不是构造函数。这样做的正确方法是什么?
在我的配置文件中,我有:用户、密码、服务器、数据库、端口。
解决方案
这似乎是因为您正在混合您的模块系统,您正在使用require
(类似于 CommonJS)但显然是一个 ECMAScript 模块(ESM)(来自export default ...
)。Node.js 本身不会让你这样做,但如果你使用某种捆绑器或转译器,也许它可能......
将您更改require
为:
import sql from "mssql";
...并确保 Node.js 正在使用 ESM¹,我不会因为sql.connect
不是函数而收到任何错误。
¹ 就我而言,因为我使用的是 Node.js v12,所以我通过"type": "module"
在我的中package.json
运行它并通过node --experimental-modules filename.js
, more here运行它来做到这一点。
推荐阅读
- c# - 使用从 JS 代码到静态 Blazor 方法的注入服务
- javascript - 在放置事件之前检测文件是否被拖动?
- django - 我在主页上有一个评论模型,但它不会自动检测我在所有帖子中写评论的帖子
- javascript - 使用多个 SVG 滚动
- c - 如果我们改变 char* ptr = ; 指针指向的地址会改变吗?
- dask - 如何确保“分区”的数量在 dask 和 dask-cudf 的工作人员之间平均分配?
- sql - 如何以表格格式调用我的输出以便我可以查询它?
- javascript - 无法在初始化之前调用表上的方法;试图调用方法“刷新”
- asp.net-core - 在 Elastic Beanstalk 上的 Asp.net core 3.0
- html - Bootstrap - 避免在移动视图中包装小控件