Я создаю модель и контроллер для выполнения некоторых финансовых транзакций, таких как дебет и кредит.
Когда я пытаюсь «создать» с использованием метода <model>.create
, он возвращает мне следующую ошибку:
(node:5192) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'length' of undefined
at Transaction._initValues (/Users/username/Documents/Projetos/projectname/node_modules/sequelize/lib/model.js:140:49)
Исходный код контроллера:
import * as Yup from 'yup';
import Transaction from '../models/Transaction';
class TransactionController {
async store(req, res) {
const schema = Yup.object().shape({
id_user: Yup.number().required(),
id_category: Yup.number().required(),
id_wallet: Yup.number(),
title: Yup.string()
.min(6)
.max(32)
.required(),
description: Yup.string(),
amount: Yup.number()
.round('floor')
.moreThan(0)
.positive()
.required(),
is_credit: Yup.bool()
.required()
.default(true),
});
if (!(await schema.isValid(req.body))) {
return res.status(400).json({
error:
'Validation failed, see documentation for insert new transaction',
});
}
const {
id_user,
id_category,
id_wallet,
title,
description,
amount,
is_credit,
} = await Transaction.create(req.body).catch(error => {
console.log('error', error);
});
return res.json({
id_user,
id_category,
id_wallet,
title,
description,
amount,
is_credit,
});
}
}
export default new TransactionController();
И база модели:
class Transaction extends Model {
static init(sequelize) {
super.init(
{
id_user: Sequelize.INTEGER,
id_category: Sequelize.INTEGER,
id_wallet: Sequelize.INTEGER,
title: Sequelize.STRING,
description: Sequelize.STRING,
amount: Sequelize.DECIMAL(10, 2),
is_credit: Sequelize.BOOLEAN,
},
{
sequelize,
}
);
return this;
}
/* static associate(models) {
this.belongsTo(models.File, { foreignKey: 'avatar_id', as: 'avatar' });
} */
static associate(models) {
this.belongsTo(models.User, { foreignKey: 'id_user', as: 'id' });
}
}
export default Transaction;
Я не могу понять, что означает length
, потому что япроверяю тело с помощью YUP и пытаюсь вставить, используя все значения внутри JSON BODY.
Может кто-нибудь мне помочь, пожалуйста?
Заранее спасибо,