nodejs中的foreach循环

时间:2021-05-15 08:36:37

标签: mysql node.js

我的项目使用 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;

1 个答案:

答案 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 
相关问题