Как проверить, не определено ли определенное свойство в NodeJS - PullRequest
0 голосов
/ 05 февраля 2020

Я создаю свой собственный сервер с NodeJS и PostgreSQL. Для конкретного API c я выполняю запрос, и мне нужно знать, является ли определенное свойство результата неопределенным или нет. Что я сделал, это:

pool.query('SELECT id, administrator FROM public."user" WHERE uid = \'' + admin + '\'', (error, results) => {
    if (error) {
       throw error
    }
    if (results.rows[0].administrator !== undefined) {
       // do my stuff
    }
});

Но это не работает, он возвращает мне это:

if (results.rows[0].administrator !== undefined) {
                    ^

TypeError: Cannot read property 'administrator' of undefined
at /home/mauro/secure-door-server/api/controllers/secureDoorController.js:27:25
at Query.<anonymous> (/home/mauro/secure-door-server/node_modules/pg-pool/index.js:348:18)
at Query.handleReadyForQuery (/home/mauro/secure-door-server/node_modules/pg/lib/query.js:128:10)
at Connection.<anonymous> (/home/mauro/secure-door-server/node_modules/pg/lib/client.js:244:19)
at Connection.emit (events.js:223:5)
at Socket.<anonymous> (/home/mauro/secure-door-server/node_modules/pg/lib/connection.js:128:12)
at Socket.emit (events.js:223:5)
at addChunk (_stream_readable.js:309:12)
at readableAddChunk (_stream_readable.js:290:11)
at Socket.Readable.push (_stream_readable.js:224:10)
[nodemon] app crashed - waiting for file changes before starting...

Как я могу проверить такое свойство?

Ответы [ 3 ]

2 голосов
/ 05 февраля 2020

Вы можете проверить этот способ

if (results.rows && results.rows[0].administrator) {}

ИЛИ для лучшего результата вы можете проверить этот способ

if (results && results.rows && results.rows.length && results.rows[0].administrator) {
   //Your Code
}
0 голосов
/ 05 февраля 2020

вы можете использовать "hasOwnPropety"

if (results.rows && results.rows[0].hasOwnProperty('administrator') {}

Он вернет true, если свойство существует.

0 голосов
/ 05 февраля 2020

То, что вы сделали правильно, вам нужно только проверить, есть ли в результатах строки, и поэтому result.rows [0] становится неопределенным в вашем коде. Что-то вроде

if (results && results.rows && results.rows[0] && results.rows[0].administrator !== undefined)

будет работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...