gpt4 book ai didi

mysql - 如何从数据库获取最后插入的id并将其发送到组件?

转载 作者:行者123 更新时间:2023-11-29 09:44:25 24 4
gpt4 key购买 nike

我想通过获取API从数据库获取最后一个ID,

问题出在表 MaterialUnit MaterialID 显示 0

console.log 在服务器中工作正常!

这是server.js

app.get('/AddProducts', function (req, res) {
const { materialName, description, categoryID, manufactureID, currencyID} = req.query;
const INSERT_MATERIAL = `INSERT INTO material (materialName, description, categoryID, manufactureID, currencyID) VALUES
('${materialName}','${description}','${categoryID}','${manufactureID}','${currencyID}')`;
connection.query(INSERT_MATERIAL, (error, result) => {
if(error) {
return res.send(error)
}
else {
console.log(result.insertId);
return res.json({id: result.insertId})
}
});
});

app.get('/AddMaterialUnits', function (req, res) {
const { materialID, unitID, def, rate, price, vat, bar} = req.query;
const INSERT_MATERIAL = `INSERT INTO materialunit (materialID, unitID, barcodeNo, salePrice, vatValue, isdefault, rate) VALUES
('${materialID}','${unitID}','${bar}','${price}','${vat}','${def}' ,'${rate}')`;
connection.query(INSERT_MATERIAL, (error, result) => {
if(error) {
return res.send(error)
}
else {
return res.send(result)
}
});
});

然后在组件中:

 AddProduct() {
let url1 = `http://localhost:3000/AddProducts?materialName=${this.state.name}&description=${this.state.description}&categoryID=${this.state.catID}&manufactureID=${this.state.manID}&currencyID=${this.state.curID}`;
fetch(url1)
.catch(error => console.error(error))
.then(alert("Added successfully"))
.then((result) => this.setState({materialID: result.id}))
.then(alert(this.state.materialID));


this.state.materialUnits.map(obj =>
fetch(`http://localhost:3000/AddMaterialUnits?materialID=${this.state.materialID}&unitID=${obj.unit.id}&def=${obj.default.value}&rate=${obj.rate}&price=${obj.price}&vat=${obj.vat}&bar=${obj.barcodeNo}`)
.catch(error => console.error(error))
.then(alert("Added successfully"))
)
}

最佳答案

问题是 id 未设置为 AUTO_INCRMENT,它始终为 0。要解决此问题,您需要在 sql 语句中手动添加它,我不建议这样做。例如INSERT INTO MATERIAL (id, ...) VALUES(12, ...)

让MySQL为你做增量。通过在 phpmyadmin 中运行以下命令来修改您的表并将 id 设置为 AUTO_INCRMENT

ALTER TABLE `material` ADD INDEX(`id`);
ALTER TABLE `material` MODIFY COLUMN id INT AUTO_INCREMENT

注意:在运行这些查询之前,您需要清空表。

enter image description here

如果出现错误,您可能需要重新创建表。使用以下命令删除表并创建一个新表。根据您的喜好更改列的长度/值。

CREATE TABLE `material` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`materialName` varchar(500) NOT NULL,
`categoryID` varchar(500) NOT NULL,
`description` varchar(500) NOT NULL,
`manufactureID` varchar(500) NOT NULL,
`currencyId` varchar(500) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

关于mysql - 如何从数据库获取最后插入的id并将其发送到组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55956034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com