#mysql #node.js #sequelize.js
#mysql #node.js #sequelize.js
Вопрос:
Я работал над проектом, который включает sequelize (MySQL DB).
Итак, у меня есть таблица «InterestRate», которая принимает идентификаторы из двух других таблиц (внешние ключи).
BankID хранится в таблице «Банки», а interId хранится в другой таблице под названием «Проценты». Теперь я хочу заполнить эту таблицу с помощью Postman, отправив эти данные:
{
"bank": "BankName",
"inter": "Interest",
"nks": "4.11",
"eks": "6.24",
"time": "36"
}
НО я хочу заполнить таблицу первичными ключами этих значений (если они существуют в их собственной таблице). Например, когда я отправляю postman, я хочу проверить таблицу «Банки» и выполнить поиск «BankName», захватить ее идентификатор в этой таблице и поместить его в новую таблицу. То же самое для этой промежуточной вещи.
Код, который у меня есть rn, — это мусор, я знаю, почему он не работает, но я действительно застрял.
(req, res) => {
const bank = req.body.bank;
const type = req.body.type;
const nks = req.body.nks;
const eks = req.body.eks;
const time = req.body.time;
InterestRate.create({
bankId: bank,
interId: type,
NKS: nks,
EKS: eks,
time: time,
})
.then(() => {
res.status(200).json({ message: 'Added successfully' });
})
.catch((err) => {
res.status(500).send('Error -> ' err);
});
};
Обратите внимание, что все модели и т.д. настроены правильно, это работает, если я ввожу данные вручную!
Спасибо!
Ответ №1:
Вам просто нужно получить Bank
и Interest
по именам и использовать найденные экземпляры модели, чтобы получить их идентификаторы для создания InterestRate
записи:
async (req, res) => {
const bank = req.body.bank;
const type = req.body.type;
const nks = req.body.nks;
const eks = req.body.eks;
const time = req.body.time;
const foundBank = await Bank.findOne({
where: {
name: bank // use a real field name instead of "name"
}
})
const foundInterest = await Interest.findOne({
where: {
name: type // use a real field name instead of "name"
}
})
if(!foundBank) {
// here should be some "res.status(...).send(...)" with error message
return
}
if(!foundInterest) {
// here should be some "res.status(...).send(...)" with error message
return
}
try {
await InterestRate.create({
bankId: foundBank.id,
interId: foundInterest.id,
NKS: nks,
EKS: eks,
time: time,
})
res.status(200).json({ message: 'Added successfully' });
catch (err) {
res.status(500).send('Error -> ' err);
}
};