node.js - 续集方言问题
问题描述
关于如何使用 Sequelize 的文档并不是很简单,尤其是对于想要使用 config.js 而不是 config.json 的新手而言。我在 stackoverflow 上尝试了不同的示例,但由于某些原因对我不起作用。但是,我把它放在这里是为了找人帮忙
我正在使用 NodeJs & Sequelize 构建一个 API 应用程序,我已经完成了以下操作
包.json 文件
"dependencies": {
"body-parser": "^1.19.0",
"cors": "^2.8.5",
"cross-env": "^7.0.3",
"deep-email-validator": "^0.1.18",
"dotenv": "^10.0.0",
"express": "^4.17.1",
"express-fileupload": "^1.2.1",
"express-handlebars": "^5.2.0",
"formidable": "^1.2.2",
"g": "^2.0.1",
"handlebars": "^4.7.6",
"jsonwebtoken": "^8.5.1",
"lodash": "^4.17.21",
"mysql2": "^2.2.5",
"nodemailer": "^6.5.0",
"sequelize": "^6.6.2",
"sequelize-cli": "^6.2.0",
"swagger-jsdoc": "^6.1.0",
"swagger-ui-express": "^4.1.6",
"sweetalert": "^2.1.2",
"sweetalert2": "^10.14.0",
"unique-string": "^2.0.0"
},
.env 文件
ACCESS_PORT= 5000
ACCESS_TOKEN_SECRET=
ACCESS_REFRESH_TOKEN=
DB_USER=root
DB_PASSWORD=
DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=db_name
DB_NAME_TEST=db_name
DB_DIALECT=mysql
config.js(位于 config 文件夹内)
require('dotenv').config()
const { DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, DB_PORT, DB_NAME_TEST, DB_DIALECT } = process.env;
module.exports = {
development: {
database: DB_NAME,
username: DB_USER,
password: DB_PASSWORD,
port: DB_PORT,
options: {
host: DB_HOST,
dialect: DB_DIALECT
},
},
test: {
database: DB_NAME_TEST,
username: DB_USER,
password: DB_PASSWORD,
host: DB_HOST,
port: DB_PORT,
dialect: DB_DIALECT
},
production: {
database: DB_NAME,
username: DB_USER,
password: DB_PASSWORD,
host: DB_HOST,
port: DB_PORT,
dialect: DB_DIALECT
}
}
index.js(此文件位于模型文件夹中)
'use strict';
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || 'development';
const config = require('./config/config')[env];
const db = {};
let sequelize;
// if (config.use_env_variable) {
// sequelize = new Sequelize(process.env[config.use_env_variable], config);
// } else {
// sequelize = new Sequelize(config.database, config.username, config.password, config);
// }
sequelize = new Sequelize(config.database, config.username, config.password, config.options);
fs
.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
})
.forEach(file => {
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
db[model.name] = model;
});
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
在运行npx sequelize-cli db:migrate时,我收到以下错误
错误:从 v4.0.0 开始需要明确提供方言
任何有关如何解决此问题的帮助将不胜感激
解决方案
使用开发环境配置,您可以在选项下选择方言和主机。尝试像其他两个一样压平它。
推荐阅读
- python - 对于二进制分类的信息量最大的特征,我的结果是否相同?
- python - Numpy:重塑的数组表现异常
- python - 不能多次使用 PyQt5 进行网络抓取
- webpack - Webpack 配置对象无效。- 'globalObject' 创建 React 应用程序
- javascript - 使用javascript获取每个级别的json值
- file - 正则表达式比较部分文件名然后移动到另一个目录 perl
- php - Laravel 属于许多其他方法
- c# - 如何在 ViewModel 中使用数组?
- assembly - 如何在汇编语言中找到奇数?
- python - 难以理解数据是如何传递的