如何解决无法使用Express JS更新MySQL表
使用Express Js来更新下表(MySQL)时遇到困难。
productdb.discount
discount_id | discount_name | discount_percent
productdb.product
product_id | discount_id | product_price(original price) | product_latest_price(price after discount) |
它以这种方式工作:
- 用户通过插入新的折扣名称,百分比来更新现有折扣表,然后从复选框中选择应用相应折扣的相关产品。输入形式如下:
-
因此,提交时,它将根据分配的product_id以阵列形式返回折扣信息,包括discount_id和所选产品。
-
我更新数据库表的概念是:
- 首先,更新折扣表。
- 然后,根据discount_id将产品表中的所有discount_id更新为null。
- 将产品最新价格更新为产品价格。
- 根据提交的产品数组将discount_id更新到产品表中。
- 最后,通过使用discount_percent计算倍数后的结果来更新product_latest_price。
- 我基于Express Promise编写了查询,由于无法更新product_latest_price(可能由于异步方法),该查询无法正确执行。实际上,代码看起来很凌乱。是否有人想以更有效的方式或更简洁的代码更新这些表?
顺便说一下,我执行查询的代码如下。
exports.discount_update = (discount_info,discount_id,product_id) => {
return new Promise((resolve,reject) => {
connectionPool.getConnection((connectionError,connection) => {
if (connectionError) {
reject(connectionError);
} else {
connection.query(`UPDATE productdb.discount SET ?
WHERE discount_id = ?`,[discount_info,discount_id],(error,result) => {
if (error) {
reject(error);
} else {
connection.query(`UPDATE productdb.product
SET discount_id = null,product_latest_price = product_price
WHERE discount_id = ?`,[discount_id],result) => {
if (error) {
reject(error);
} else if (result.affectedRows >= 1) {
for (i = 0; i < product_id.length; i++) {
connection.query(`UPDATE productdb.product
SET discount_id = ?
WHERE product_id = ?`,[discount_id,product_id[i]],results) => {
if (error) {
reject(error);
} else {
connection.query(`UPDATE productdb.product AS product
JOIN productdb.discount AS discount
ON product.discount_id = discount.discount_id
SET product.product_latest_price = product.product_price - product.product_price * (discount.discount_percent) / 100
WHERE product_id = ?`,[product_id[i]],result) => {
if (error) {
reject(error);
} else if (result.affectedRows >= 1) {
resolve(result)
} else {
resolve(result)
}
})
}
})
}
}
})
}
})
}
})
})
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。