У меня есть следующая проблема, у меня есть 2 модели: Клиент
module.exports = (sequelize, DataTypes) => {
const Client = sequelize.define('Client', {
first_name: DataTypes.STRING,
last_name: DataTypes.STRING,
phone: DataTypes.STRING,
mobile_phone: DataTypes.STRING,
email: DataTypes.STRING,
});
//creating association Client with Gender
Client.associate = function (models) {
Client.hasOne(models.Gender, {
//
});
};
return Client; }
и Пол:
module.exports = (sequelize, DataTypes) => {
const Gender = sequelize.define('Gender', {
name: DataTypes.STRING,
});
//creating association Gender with Employee
Gender.associate = function (models) {
models.Gender.hasMany(models.Employee, {
//
});
};
//creating association Gender with Client
Gender.associate = function (models) {
models.Gender.belongsTo(models.Client, {
foreignKey: 'gender_id'
});
};
return Gender; }
Мой ClientController:
const { Client, Gender } = require('../models');
class ClientController {
// Apresenta todos os resgistros do determinado Model
async index (req, res) {
const clients = await Client.findAll({});
return res.status(200).json({
status: 'ok',
clients
});
}
// Apresenta os atributos setados de um resgistro específico
async show (req, res) {
const client = await Client.findAll({
attributes: ['id', 'first_name', 'last_name', 'phone', 'mobile_phone', 'email'],
where: {
id: req.params.id
},
include: [{
model: Gender,
attributes: [],
}],
});
return res.status(200).json({
status: 'ok',
client
});
}
// Cria e salva um resgistro do Model especificado
async store (req, res) {
const client = await Client.create(req.body);
return res.status(201).json({
status: 'created',
client
});
}
// Edita e salva um resgistro do Model especificado
async update (req, res) {
const { first_name, last_name, phone, mobile_phone, email } = req.body;
const client = await Client.update({
first_name: first_name,
last_name: last_name,
phone: phone,
mobile_phone: mobile_phone,
email: email
}, {
where: {
id: req.params.id
}
});
return res.status(200).json({
status: 'updated',
client
});
}
// Exclui um resgistro do Model especificado
async destroy (req, res) {
await Client.destroy({
where: {
id: req.params.id
}
});
return res.status(204).json({
status: 'removed'
});
}
}
module.exports = new ClientController()
Но мне возвращается следующее:
узел ./bin/www*1013*
api: сервер прослушивает порт 3000 + 0ms (узел: 16328) UnhandledPromiseRejectionWarning: SequelizeEagerLoadingError: Пол не связан с клиентом! в Function._getIncludedAssociation (C: \ SISTEMA-REACT-EXPRESS \ api \ node_modules \ sequelize \ lib \ model. js: 715: 13) в Function._validateIncludedElement (C: \ SISTEMA-REACT-EXPRESS \ api \ node_modules \ sequelize \ lib \ model. js: 619: 53) по адресу options.include.options.include.map.include (C: \ SISTEMA-REACT-EXPRESS \ api \ node_modules \ sequelize \ lib \ модель. js: 516: 37) в Array.map () в Function._validateIncludedElements (C: \ SISTEMA-REACT-EXPRESS \ api \ node_modules \ sequelize \ lib \ model. js: 511: 39) в Promise.try.then.then (C: \ SISTEMA-REACT-EXPRESS \ api \ node_modules \ sequelize \ lib \ model. js: 1726: 14) в tryCatcher (C: \ SISTEMA-REACT- EXPRESS \ api \ node_modules \ bluebird \ js \ release \ util. js: 16: 23) в Promise._settlePromiseFromHandler (C: \ SISTEMA-REACT-EXPRESS \ api \ node_modules \ bluebird \ js \ release \ обещание. js: 547: 31) в Promise._settlePromise (C: \ SISTEMA-REACT-EXPRESS \ api \ node_modules \ bluebird \ js \ release \ обещания. js: 604: 18) в Promise._settlePromise0 (C: \ SIS TEMA-REACT-EXPRESS \ api \ node_modules \ bluebird \ js \ release \ обещания. js: 649: 10) в Promise._settlePromises (C: \ SISTEMA-REACT-EXPRESS \ api \ node_modules \ bluebird \ js \ выпуск \ обещание. js: 729: 18) в _drainQueueStep (C: \ SISTEMA-REACT-EXPRESS \ api \ node_modules \ bluebird \ js \ release \ asyn c. js: 93: 12) в _drainQueue (C: \ SISTEMA-REACT-EXPRESS \ api \ node_modules \ bluebird \ js \ release \ asyn c. js: 86: 9) в Asyn c ._ сливныхQueues (C: \ SISTEMA -REACT-EXPRESS \ api \ node_modules \ bluebird \ js \ release \ asyn c. js: 102: 5) в Immediate.Asyn c .drainQueues [как _onImmediate] (C: \ SISTEMA-REACT -EXPRESS \ api \ node_modules \ bluebird \ js \ release \ asyn c. js: 15: 14) в runCallback (таймеры. js: 705: 18) в tryOnImmediate (таймеры. js: 676: 5) at processImmediate (таймеры. js: 658: 5) (узел: 16328) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за того, что внутри asyn c -функции не было блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). (идентификатор отклонения: 1) (узел: 16328) [DEP0018] Предупреждение об устаревании: отклонения необработанного обещания устарели. В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом выхода.
Obs: В n: m отношениях с сводной таблицей все нормально, кто-то может мне помочь