Как сделать оператор if в JavaScript, чтобы проверить, является ли массив JSON пустым? - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь получить разные ответы от переполнения стека, чтобы написать оператор if, проверка которого - массив JSON заполнен или пуст.Однако console.log всегда возвращает значение undefined.Я использую node.js и webstorm в качестве IDE.Могу ли я получить помощь, чтобы решить эту проблему?

function selectData(){
    var sql = "SELECT * FROM cust where LastName = '" +registerArray[0]+"'";
    con.query(sql, function (err, result) {
        console.log(JSON.stringify(result)); //correctly displaying stuffs from db
        if (result) { //statement not working correctly.
            var pw = "SELECT ID FROM cust where LastName = '" +registerArray[0]+"'";
            con.query(pw, function (err, result) {
                var idcheck  = JSON.stringify(result);
                console.log(result); //always shows undefined
                if (idcheck !== registerArray[0]){
                    return ("{re enter correct password}");
                } else {
                    return ("{login successfully}");
                }
            });

        } else {
            return("{sign up first}");
        }
    });
}
con.end();

}

Ответы [ 3 ]

0 голосов
/ 21 марта 2019

Проблема в том, что вы используете оператор строгого равенства с con.query, который возвращает нулевой массив ([]), если он ничего не нашел. Поскольку вы используете строгое сравнение, ([]) !== 0 разрешается в TRUE, что вызывает вашу проблему.

Решение

Вы можете изменить свое утверждение на if (result) или, более ясную, более подробную версию, if (result.length > 0 ), которая будет соответствовать тому, что вы пытаетесь сделать.

Вы можете узнать больше о том, как JS оценивает выражения из этой статьи Истинные и ложные значения в javascript

0 голосов
/ 21 марта 2019

Чтобы проверить неопределенность и наличие элементов ...

if (result !== undefined && Object.keys(result).length !== 0) {
     //you've got an object and it has some stuff 
} else {
     //handle situation where you've got nothing
}

Редактировать: очевидно, вы не должны использовать getOwnPropertyNames, так как некоторые защищенные платформы будут блокировать его .. вместо этого используйте Object.keys.

0 голосов
/ 21 марта 2019

Использовать Object.keys

function selectData(){
    var sql = "SELECT * FROM cust where LastName = '" +registerArray[0]+"'";
    con.query(sql, function (err, result) {
        console.log(JSON.stringify(result));
        if (Object.keys(result).length !== 0 ){ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...