如何在Express中引用Sequelize类.JS应用程序



这是我的user.js Sequelize类:

'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不是一个函数:

const {Sequelize} = require('sequelize');
const {userModel}= require('../../models/user');

function GetAll(){
return user.findAll();
}

module.exports = {
GetAll,
}

我是ExpressJS的新手,对于Sequelize来说更是如此。

看看这里的问题和我的答案,了解如何注册模型和关联
导出的函数返回注册的模型,因此需要先通过Sequelize实例和DataTypes调用它,然后使用返回的模型来调用类似findAll的方法。最好先注册所有模型,然后再注册它们之间的所有关联(请参阅前面提到的链接(。

最新更新