【发布时间】:2022-01-19 18:31:20
【问题描述】:
我正在尝试使用 Sequelize 在 JavaScript 中的迁移文件中发出一个简单的 SELECT 请求。
使用此代码:
const Sequelize = require("sequelize");
const { query, QueryTypes } = use_env_variable
? new Sequelize(process.env[use_env_variable], config)
: new Sequelize(database, username, password, config);
module.exports = {
up: async ({ addColumn, removeColumn }, { INTEGER }) => (
const results = await query("SELECT * FROM table;", { type: QueryTypes.SELECT });
),
down: async () => {}
});
我遇到了错误:
错误:无法读取未定义的属性“选项”
同时,如果我不专门从 sequelize 中仅导入 query 和 QueryTypes 并使用常规的 sequelize.query 或 sequelize.QueryTypes.SELECT 它将起作用:
const Sequelize = require("sequelize");
const sequelize = use_env_variable
? new Sequelize(process.env[use_env_variable], config)
: new Sequelize(database, username, password, config);
module.exports = {
up: async ({ addColumn, removeColumn }, { INTEGER }) => (
const results = await sequelize.query("SELECT * FROM table;", { type: sequelize.QueryTypes.SELECT });
),
down: async () => {}
});
上面的代码可以按我需要的方式正常工作,但是为什么呢?如果我混合这两个代码以使sequelize.query 和query 像这样导入:
const Sequelize = require("sequelize");
const sequelize = use_env_variable
? new Sequelize(process.env[use_env_variable], config)
: new Sequelize(database, username, password, config);
const { query, QueryTypes } = use_env_variable
? new Sequelize(process.env[use_env_variable], config)
: new Sequelize(database, username, password, config);
我自己认为console.log(query === sequelize.query); 会返回true,但使用query 而不是sequelize.query 会引发ERROR: Cannot read property 'options' of undefined 错误...
我哪里做错了?
【问题讨论】:
-
为什么要尝试在迁移中实例化连接?只需在 JSON 格式中使用
.sequelizrc和config-file 并使用 NODE_ENV 指示 DB 所需的配置 -
@Anatoly 我已考虑您的评论,但与我的问题不太相关。
标签: node.js sequelize.js sequelize-cli