在if语句中,Connection.query函数被跳过而不执行

时间:2019-10-09 04:53:01

标签: mysql node.js

我已经设置了几个表达端点,使用node和angular建立了一个考勤注册系统,一切正常,除了在'/ punchin'端点中,在if语句中使用了几个connection.query函数。正在被跳过而不执行

我已经尝试过使用promise,con.query(sqlQuery).then()。catch(),它不起作用

app.post('/punchin',(req,res)=>{

const checkIfIdExists='SELECT uid FROM registerTbl WHERE uid="'+req.body.inData+'"'
    con.query(checkIfIdExists,(err,result)=>{
        if(result[0]===undefined)
        {
            return console.log('The entered unique id does not exist in our database')
        }
    })
        const checkIfStatIsUndefined='SELECT attendanceStatus FROM userAttendanceLog WHERE uid="'+req.body.inData+'" '
        con.query(checkIfStatIsUndefined,(err,result)=>{
            console.log(result)
            console.log(checkIfStatIsUndefined)
            if(!result[0])
            {
                console.log('line 68')
                const selectLogDetailForNewUser='SELECT name,uid FROM registerTbl WHERE uid="'+req.body.inData+'"'
                console.log('line 70' +selectLogDetailForNewUser)
                con.query(selectLogDetailForNewUser,(err,result)=>{
                    console.log('line 80' + sel)
                    console.log(result+'line 81')
                    const updateStatusForNewUser='INSERT INTO userAttendanceLog (name,uid,attendanceStatus) VALUES ("'+result[0].name+'","'+req.body.inData+'","1")'
                    con.query(updateStatusForNewUser,(err,result)=>{
                        if(err)
                        {
                            return console.log("Error in Posting")
                        }
                        res.send('Status updated')
                    })     
                })


            }


        })

预期结果应该是应该执行if语句中的2 connection.query函数,但不应执行。

1 个答案:

答案 0 :(得分:0)

您有条件说,如果此查询的值是一个空数组,并且零索引中没有对象,请执行条件。但是,当结果具有值时,如果!不运行,则结果为假。因此,结果必须是不符合条件的值。

  

如果result.length == 0

console.log(result[0]) // undefined

并且在javaScript中没有未定义为真

console.log(!result[0]) // true

因此该条件不适用,但是如果结果包含信息:

console.log(result[0]) // query result data

在结果main中具有对象的数据和数组在条件上为true,而不是false,如果不应该执行语句

console.log(!result[0]) // false

如果运行它,请删除!标记或更改执行条件。

var mysql = require('mysql');

var con = mysql.createConnection({
    host: '127.0.0.1',
    user: 'root',
    password: 'yourPass',
    database: 'test'
});
function f() {
    con.connect(function (err) {
        if (err) throw err;
        console.log("Connected!");


        const checkIfIdExists = 'select 1 + 1'
        con.query(checkIfIdExists, (err, result) => {
            console.log(1, result)
            if (true) {
                return console.log('The entered unique id does not exist in our database')
            }
        })
        const checkIfStatIsUndefined = 'select 10 + 10 '
        con.query(checkIfStatIsUndefined, (err, result) => {
            console.log(10, result, result[0], !result[0])
            if (result[0]) {
                const selectLogDetailForNewUser = 'select 100 + 100'
                con.query(selectLogDetailForNewUser, (err, result) => {
                    console.log(100, result, err)
                    console.log("baba" + sel);
                    const updateStatusForNewUser = 'select 1000 + 1000'
                    con.query(updateStatusForNewUser, (err, result) => {
                        console.log(1000, result)
                        if (err) {
                            return console.log("Error in Posting")
                        }
                        //res.send('Status updated')
                    })
                })
            }
        })
    });
}

console.log(f());