Node.js使用Sequelize如何访问MySQL所有表实现fetch查询接口
Sequelize 查询路由 Model 传参解决方案
你代码里标注问题的位置,不能传字符串,必须传入已经完成MySQL表映射、提前定义好的Sequelize Model对象,操作步骤如下:
- 先确定你本次要查询的目标MySQL表名,对照你本地的数据库表清单确认即可
- 打开项目里存放Model定义的目录,找到和目标表绑定映射的Model:Sequelize的Model定义中,要么会通过
tableName配置项显式声明对应的数据表名,要么默认会将Model名称转为复数蛇形格式匹配表名,例如定义的Model名为Article,默认对应数据库中的articles表 - 在当前路由文件的顶部,通过
require/import引入你找到的目标Model,再把引入的Model变量放到占位的位置,就能正常调用findAll方法查询对应表的全量数据了
修正后的代码示例
假设你要查询users表,对应Model文件导出的实例为User,路由文件路径和Model的相对层级按你项目实际结构调整即可:
// 路由文件顶部引入目标Model const User = require('../models/user.model') router.get('/fetch', async (req, res) => { // 传入引入的Model实例调用查询方法 const allData = await User.findAll({}) res.json(allData) })
注意:如果后续要查询其他表,重复上述流程即可。必须传入完成初始化和表映射的Model对象,直接传字符串会触发「findAll方法不存在」的报错。
内容的提问来源于stack exchange,提问作者Mel Carlo Iguis
相关产品推荐
相关产品推荐

