【发布时间】:2022-01-02 03:14:27
【问题描述】:
当我尝试启动我的应用程序或运行某些路由时,我遇到了这个问题。我不明白为什么。有人可以帮忙吗?
完整的错误:
Error: No Sequelize instance passed
at Function.init (D:\repo\lbr\node_modules\sequelize\dist\lib\model.js:1:13622)
at initUser (D:\repo\lbr\db\models\USERS\user.js:20:7)
at Object.<anonymous> (D:\repo\lbr\db\lbDB.js:33:8)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (D:\repo\lbr\controllers\UserController.js:1:16)
我的 app.js 在根目录下,路由配置的地方:
const express = require("express");
const cors = require("cors");
const cookieParser = require("cookie-parser");
const app = express();
const users = require("./routes/users");
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(cors({ origin: "*", optionsSuccessStatus: 200 }));
app.use("/users", users);
module.exports = app;
/routes/users.js
const express = require("express");
const { listUsers, addUsers, deleteUsers, updateUsers } = require("../controllers/UserController");
const router = express.Router();
router.get("/users", listUsers);
router.post("/users", addUsers);
router.put("/users/:id", updateUsers);
router.delete("/users/:id", deleteUsers);
module.exports = router;
用户控制器:
const models = require("../db/lbDB");
/**
* @param {import("express").Request} req
* @param {import("express").Response} res
*/
async function listUsers (req, res) {
try {
res.status(200).send("Users.");
} catch (err) {
console.log(err);
res.status(500).json({ message: err.message, err });
}
}
module.exports = { listUsers, ... };
lbDb,数据库的配置在哪里:
const Sequelize = require("sequelize");
const configs = require("./config/config");
const { initUser } = require("./models/USERS/user");
const { initSector } = require("./models/USERS/sector");
const { initArchives } = require("./models/ARCHIVES/archives");
if (Sequelize.Promise) {
Sequelize.Promise.config({
// Enables all warnings except forgotten return statements.
warnings: {
wForgottenReturn: false
}
});
}
const env = process.env.NODE_ENV || "development";
const config = configs[env];
if (config.logging)
config.logging = console.log;
/**
* @type {Sequelize} conexão com o banco de dados.
*/
let sequelize;
const db = {
db:sequelize,
// Carrega arquivos de modelos das tabelas.
User: initUser(sequelize),
Sector: initSector(sequelize),
Archives: initArchives(sequelize)
};
Object.keys(db).forEach(modelName => {
if ("associate" in db[modelName])
db[modelName].associate(db);
});
module.exports = db;
用户模型:
const { Model, DataTypes } = require("sequelize");
class User extends Model {
/**
* Cria associações entre as tabelas do banco de dados.
* @param {import("../../lbDB")} models
*/
static associate (models) {
User.belongsTo(models.Sector, { as: "sector", foreignKey: "id_sector" });
User.hasMany(models.Archives, { as: "archives", foreignKey: "id_archives" });
}
}
/**
* Cria o modelo da tabela
* @param {import("sequelize").Sequelize} sequelize conexão com o banco de dados.
* @returns
*/
function initUser (sequelize) {
User.init({
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
id_sector: {
type: DataTypes.INTEGER,
references: { model: "sector", key: "id" },
allowNull: false
},
user: DataTypes.STRING(40),
name: DataTypes.STRING(100),
email: DataTypes.STRING(100),
password: DataTypes.STRING(100)
}, {
sequelize,
timestamps: false,
modelName: "User",
tableName: "user",
underscored: true
});
return User;
}
module.exports = { initUser };
这些是我认为可能导致错误的代码部分。我不明白为什么。 Sequelize 似乎配置正确,但我无法无误地访问我的路由或启动我的应用程序。
【问题讨论】:
标签: javascript node.js express sequelize.js