簡體   English   中英

Connection.query function 被跳過並且不在 if 語句中執行

[英]Connection.query function is being skipped and not executed within if statement

我已經設置了幾個快速端點來使用節點和 angular 構建考勤注冊表系統,一切正常,除了在“/punchin”端點中,我使用了幾個 connection.query function 在 if 語句中被跳過並且沒有被執行

我嘗試過使用承諾 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 function 應該被執行,但事實並非如此。

你有條件說如果這個查詢的值是一個空數組並且在零索引中沒有 object,執行條件。 但是當結果有值時,真正的結果是假的! 不要運行它。 所以結果一定是不符合條件的值。

如果結果.長度 == 0

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

並且在 javaScript 中未定義為真

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

所以條件不適用,但如果結果有信息:

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

在結果中具有 object 的數據和數組,主要條件為真,而不是假,不應執行 if 語句

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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM