[英]How to reference a Sequelize class in a Express.JS app
這是我的 user.js Sequelize class:
'use strict';
const {Sequelize} = require('sequelize');
const {
Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class User extends Model {
/**
* Helper method for defining associations.
* This method is not a part of Sequelize lifecycle.
* The `models/index` file will call this method automatically.
*/
static init(sequelize) {
super.init(
{
name: Sequelize.STRING,
},
{
sequelize,
});
this.addHook('beforeSave', async (user) => {
return user.id = uuid();
});
return this;
}
static associate(models) {
// define association here
User.hasMany(UserRole,
{
foreignKey: {
field:'UserId',
allowNull: false,
},
});
}
}
User.init({
Id: DataTypes.UUID,
Name: DataTypes.STRING,
UserName: DataTypes.STRING,
Email: DataTypes.STRING,
Password: DataTypes.STRING,
PhoneNumber: DataTypes.STRING,
MobileNumber: DataTypes.STRING,
DateOfBirth: DataTypes.DATE,
LockoutEnabled: DataTypes.BOOLEAN,
LockoutEnd: DataTypes.DATE
}, {
sequelize,
modelName: 'User',
});
return User;
};
我正在嘗試聲明一個實例來對我的數據庫執行 findAll 調用。
到目前為止,這就是我所擁有的,它一直在說 findAll 不是 function:
const {Sequelize} = require('sequelize');
const {userModel}= require('../../models/user');
function GetAll(){
return user.findAll();
}
module.exports = {
GetAll,
}
我是 Express JS 的新手,對於 Sequelize 更是如此。
查看這里的問題和我的回答,了解如何注冊模型和關聯。
你導出一個 function 返回一個注冊的 model,所以你需要先調用它傳遞一個 Sequelize 實例和數據類型,然后你可以使用返回的 model 來調用像findAll
這樣的方法。 最好先注冊所有模型,然后才注冊它們之間的所有關聯(請參閱提到的鏈接)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.