mysql - 从另一个表中检索数据并将其插入到新表中
问题描述
我一直在从事一个涉及 sequelize(MySQL DB)的项目。
所以我有一个表“InterestRate”,它从另外两个表(外键)中获取 id。
bankId 存储在“Banks”表中,interId 存储在另一个名为“Interest”的表中。现在我想通过发送这些数据来用 Postman 填充这个表:
{
"bank": "BankName",
"inter": "Interest",
"nks": "4.11",
"eks": "6.24",
"time": "36"
}
但我想用这些值的主键填充表(如果存在于他们自己的表中)。例如,当我发送给邮递员时,我想检查表“Banks”并搜索“BankName”,并在该表中获取其 id,并将其放入新表中。这间事情也一样。
我拥有的代码是垃圾,我知道为什么它不起作用,但我真的被卡住了。
(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);
});
};
请注意,所有模型等都已正确设置,如果我手动输入内容,它就可以工作!谢谢!
解决方案
您只需要通过名称获取Bank
和Interest
使用找到的模型实例来获取它们的 id 来创建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);
}
};
推荐阅读
- mysql - 如何找到会员不在的网站?
- powershell - 如何覆盖对象属性 - powershell
- c++ - 如何将变量作为参数放入 system()
- vue.js - 防止 Function 和 innerHTML 出现在捆绑代码中 - webpack & vue
- python - 使用 DBSCAN 返回每个集群的 DataFrame 行
- java - 在 Apache Camel 中对 Rest 消费者执行类型转换
- typescript - 如何在 cypress 项目中设置“类型”文件
- wordpress - 为什么不能按类别名称过滤自定义帖子类型?
- javascript - JavaScript函数查找并返回最大数字
- ios - 将现有 iPhone 应用程序移植到通用应用程序