當我嘗試啟動我的應用程式或運行一些路由時,我遇到了這個問題。我不明白為什么。任何人都可以幫忙嗎?
完整的錯誤:
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 似乎配置正確,但我無法無錯誤地訪問我的路由或啟動我的應用程式。
uj5u.com熱心網友回復:
您沒有初始化sequelize. 例子:
const sequelize = new Sequelize({
dialect: 'sqlite',
storage: './user.db'
})
在您的代碼sequelize中未定義:
let sequelize;
const db = {
db:sequelize,
// Carrega arquivos de modelos das tabelas.
User: initUser(sequelize),
Sector: initSector(sequelize),
Archives: initArchives(sequelize)
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364401.html
標籤:javascript 节点.js 表达 sequelize.js
上一篇:嘗試發出時,帶有Node.js的Socket.io在路由檔案中回傳未定義
下一篇:為什么順序在中間件檔案中很重要?
