我的项目使用 Node JS + My SQL
我正在运行一个简单的查询,用于检查数据库中是否存在某些参数的条目。 如果它们存在,则更新它们,否则插入它们。
问题是,它输入最后一个条目 n 次,而不是每个条目都是唯一的。 更新时也无法识别正确的行。
router.post('/feeRegister', asyncMiddleware( async(req, res) => {
let post= {
...........
}
JSON.parse(req.body.fees).forEach((i,index) => {
let sql = `SELECT id, period, amount FROM feeregister WHERE schoolId = '${req.body.schoolId}' AND studentId = '${req.body.student}' AND classes = '${req.body.classes}' AND year = '${req.body.year}' AND type = '${JSON.parse(req.body.fees)[index][1]}';`
pool.query(sql, async(err, results) => {
try{
if(err){ throw err }
if(results){
if(results.length){
console.log('Entry Exists', index, results[0].id)
let post2= {
...............
}
let sql2 = `UPDATE feeregister SET ? WHERE id = '${results[0].id}'`;
pool.query(sql2, post2, async(err, results) => {
try{
if(err){ throw err }
if(results){}
}catch(e){ func.logError(e); res.status(500); return; }
})
}else{
console.log('Entry does not exist', index)
let sql = `INSERT INTO feeregister SET ?`
pool.query(sql, post, async(err, results) => {
try{
if(err){ throw err }
if(results){}
}catch(e){ func.logError(e); res.status(500); return; }
})
}
}
}catch(e){ func.logError(e); res.status(500); return; }
})
});
}))
我正在连接到数据库,如:
var mysql = require('mysql')
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
database: 'dBName',
password: '',
multipleStatements: true
});
module.exports = pool;
答案 0 :(得分:0)
也许您应该使用 async-await 方法调用查询函数。
{
stat: 2,
idusers: 1,
wp_id: 17,
... some more fields...
address: '',
city: '',
signature_name: null,
signature_email: null,
status: 1,
update_date: 2020-10-01T07:47:23.000Z,
retrieve_date: 0999-12-31T21:39:06.000Z,
checking: 1,
UDATE: null