node.js - Sequelize Node.js 模型未关联到模型
问题描述
我的 Node JS 应用程序中有两个模型,用户和公司。当我在获取公司时尝试使用 include 函数时,出现错误:
message: "users is not associated to companies!"
这是用户模型
import { Sequelize, DataTypes } from 'sequelize';
import { Application } from '../declarations';
export default function (app: Application) {
const sequelizeClient: Sequelize = app.get('sequelizeClient');
const users = sequelizeClient.define('users', {
email: {
type: DataTypes.STRING,
allowNull: false,
unique: true
},
password: {
type: DataTypes.STRING,
allowNull: true
},
role: {
type: DataTypes.STRING,
allowNull: true,
},
language: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: 'en',
},
firstName: {
type: DataTypes.STRING,
allowNull: false
},
lastName: {
type: DataTypes.STRING,
allowNull: false,
},
}, {
underscored: true,
hooks: {
beforeCount(options: any) {
options.raw = true;
}
}
});
// eslint-disable-next-line no-unused-vars
(users as any).associate = function (models: any) {
(users as any).belongsTo(models.companies, {
foreignKey: 'companyId',
allowNull: true,
onDelete: "CASCADE",
});
};
return users;
}
和公司模型:
import { Sequelize, DataTypes, Model } from 'sequelize';
import { Application } from '../declarations';
export default function (app: Application) {
const sequelizeClient: Sequelize = app.get('sequelizeClient');
const companies = sequelizeClient.define('companies', {
name: {
type: DataTypes.STRING,
allowNull: false
},
phone: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: '',
},
email: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: '',
},
active: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: true,
},
}, {
underscored: true,
hooks: {
beforeCount(options: any) {
options.raw = true;
}
}
});
// eslint-disable-next-line no-unused-vars
(companies as any).associate = function (models: any) {
(companies as any).hasMany(models.users);
(companies as any).hasMany(models.patients);
};
return companies;
}
和包含功能
function getSuperAdmin() {
return (context: HookContext) => {
const sequelizeClient = context.app.get("sequelizeClient");
context.params.sequelize = {
include: [
{
model: sequelizeClient.models.users,
as: 'users',
required: false,
where: {
'$users.role$': 'super_admin'
}
}
],
};
return context;
}
}
当我在用户查询中包含公司模型时,它可以正常工作。但不是反过来。有任何想法吗?
谢谢
解决方案
推荐阅读
- mysql - 在 MySQL 中使用固定大小的行会提高查询性能吗?
- python - django中的条件渲染好吗?
- react-native - createTopTabNavigator().Navigator 在本机顶部选项卡导航器中未定义
- java - NullPointerException : 尝试获取空数组的长度
- c# - ASP.net 核心:将页面呈现为字符串期间模型为空
- javascript - Windows 中用于使用 Cordova 创建反应离子应用程序的终端命令是什么?我尝试搜索但没有得到任何东西
- javascript - Highcharts.js 柱形图标签和数据在 60 列后无法正确显示
- yocto - URL linphone 的提取器失败
- python - 为什么我的 python 代码和转换后的 .exe 文件的工作方式不同?
- python - 有没有一种方法可以在 tkinter 的每个窗口中显示标签,而不必一遍又一遍地写出每一行代码