Проверка пользователя в БД Postgrsql на Nod.js

Не получатся проверить email пользователя в БД, точнее проверка проходит а вот на то что есть или нету email в БД не получается rows возвращается а вот что делать дальше не разберусь. Пишу цикл для запроса, Бд зависает. При ответе что есть email нужно не регистрировать пользователя а при отрицательном ответе пользователя нужно зарегистрировать. Node.js Тот код который закомментирован это регистрация пользователя. Благодарен за любую помощь.

Вот мой код:

const db = require('../db')
const bcrypt = require('bcrypt')
//const { json } = require('express')

class userController {
    async createUser  (req, res) {
        try{

            const {name, surname, email, pass, pass2} = req.body

               db.query('SELECT * FROM users WHERE email = $1', [email] , (err, row) =>{

                if(err){
                    console.log('Error executing query', err.stack);
                }
                //res.json(row)
                let isTrue=false
                if(row){
                    for(let i=0; i < row.length; i++){
                        if(row[i].email == email){
                            isTrue = true;
                            row.json({"message": "C данным email пользователь есть"})
                        }else{
                            row.json({"message": " Регистрирую пользователя"})
                        }
                    }
                }
                
              });

              
            
                /*if(pass==pass2){
                    const hashPass = bcrypt.hashSync(pass, 15)
                    const hashPass2 = bcrypt.hashSync(pass2, 15)
        
                    const newPerson = await db.query(`INSERT INTO users(name, surname, email, pass, pass2) values ($1, $2, $3, $4, $5) RETURNING *`, [name, surname, email, hashPass, hashPass2])
                    res.json(newPerson.rows)
                }else{
                    res.json({"message" : "пароли не совпадают"})
                }*/
            

        } catch(e){
            console.log(e)
            res.send({message: "Server error"})

        }
        

    }

Вот что возвращает сервер res.json(row):

{
    "command": "SELECT",
    "rowCount": 0,
    "oid": null,
    "rows": [],
    "fields": [
        {
            "name": "id",
            "tableID": 16420,
            "columnID": 1,
            "dataTypeID": 23,
            "dataTypeSize": 4,
            "dataTypeModifier": -1,
            "format": "text"
        },
        {
            "name": "name",
            "tableID": 16420,
            "columnID": 2,
            "dataTypeID": 1043,
            "dataTypeSize": -1,
            "dataTypeModifier": 259,
            "format": "text"
        },
        {
            "name": "surname",
            "tableID": 16420,
            "columnID": 3,
            "dataTypeID": 1043,
            "dataTypeSize": -1,
            "dataTypeModifier": 259,
            "format": "text"
        },
        {
            "name": "email",
            "tableID": 16420,
            "columnID": 4,
            "dataTypeID": 1043,
            "dataTypeSize": -1,
            "dataTypeModifier": 259,
            "format": "text"
        },
        {
            "name": "pass",
            "tableID": 16420,
            "columnID": 5,
            "dataTypeID": 1043,
            "dataTypeSize": -1,
            "dataTypeModifier": 259,
            "format": "text"
        },
        {
            "name": "pass2",
            "tableID": 16420,
            "columnID": 6,
            "dataTypeID": 1043,
            "dataTypeSize": -1,
            "dataTypeModifier": 259,
            "format": "text"
        }
    ],
    "_parsers": [
        null,
        null,
        null,
        null,
        null,
        null
    ],
    "_types": {
        "_types": {
            "arrayParser": {},
            "builtins": {
                "BOOL": 16,
                "BYTEA": 17,
                "CHAR": 18,
                "INT8": 20,
                "INT2": 21,
                "INT4": 23,
                "REGPROC": 24,
                "TEXT": 25,
                "OID": 26,
                "TID": 27,
                "XID": 28,
                "CID": 29,
                "JSON": 114,
                "XML": 142,
                "PG_NODE_TREE": 194,
                "SMGR": 210,
                "PATH": 602,
                "POLYGON": 604,
                "CIDR": 650,
                "FLOAT4": 700,
                "FLOAT8": 701,
                "ABSTIME": 702,
                "RELTIME": 703,
                "TINTERVAL": 704,
                "CIRCLE": 718,
                "MACADDR8": 774,
                "MONEY": 790,
                "MACADDR": 829,
                "INET": 869,
                "ACLITEM": 1033,
                "BPCHAR": 1042,
                "VARCHAR": 1043,
                "DATE": 1082,
                "TIME": 1083,
                "TIMESTAMP": 1114,
                "TIMESTAMPTZ": 1184,
                "INTERVAL": 1186,
                "TIMETZ": 1266,
                "BIT": 1560,
                "VARBIT": 1562,
                "NUMERIC": 1700,
                "REFCURSOR": 1790,
                "REGPROCEDURE": 2202,
                "REGOPER": 2203,
                "REGOPERATOR": 2204,
                "REGCLASS": 2205,
                "REGTYPE": 2206,
                "UUID": 2950,
                "TXID_SNAPSHOT": 2970,
                "PG_LSN": 3220,
                "PG_NDISTINCT": 3361,
                "PG_DEPENDENCIES": 3402,
                "TSVECTOR": 3614,
                "TSQUERY": 3615,
                "GTSVECTOR": 3642,
                "REGCONFIG": 3734,
                "REGDICTIONARY": 3769,
                "JSONB": 3802,
                "REGNAMESPACE": 4089,
                "REGROLE": 4096
            }
        },
        "text": {},
        "binary": {}
    },
    "RowCtor": null,
    "rowAsArray": false
}

А это возвращает console.log(row);

Result {
  command: 'SELECT',
  rowCount: 0,
  oid: null,
  rows: [],
  fields: [
    Field {
      name: 'id',
      tableID: 16420,
      columnID: 1,
      dataTypeID: 23,
      dataTypeSize: 4,
      dataTypeModifier: -1,
      format: 'text'
    },
    Field {
      name: 'name',
      tableID: 16420,
      columnID: 2,
      dataTypeID: 1043,
      dataTypeSize: -1,
      dataTypeModifier: 259,
      format: 'text'
    },
    Field {
      name: 'surname',
      tableID: 16420,
      columnID: 3,
      dataTypeID: 1043,
      dataTypeSize: -1,
      dataTypeModifier: 259,
      format: 'text'
    },
    Field {
      name: 'email',
      tableID: 16420,
      columnID: 4,
      dataTypeID: 1043,
      dataTypeSize: -1,
      dataTypeModifier: 259,
      format: 'text'
    },
    Field {
      name: 'pass',
      tableID: 16420,
      columnID: 5,
      dataTypeID: 1043,
      dataTypeSize: -1,
      dataTypeModifier: 259,
      format: 'text'
    },
    Field {
      name: 'pass2',
      tableID: 16420,
      columnID: 6,
      dataTypeID: 1043,
      dataTypeSize: -1,
      dataTypeModifier: 259,
      format: 'text'
    }
  ],
  _parsers: [
    [Function: parseInteger],
    [Function: noParse],
    [Function: noParse],
    [Function: noParse],
    [Function: noParse],
    [Function: noParse]
  ],
  _types: TypeOverrides {
    _types: {
      getTypeParser: [Function: getTypeParser],
      setTypeParser: [Function: setTypeParser],
      arrayParser: [Object],
      builtins: [Object]
    },
    text: {},
    binary: {}
  },
  RowCtor: null,
  rowAsArray: false
}

А как вывести в формате json после регистрации. Вот код:

const newPerson  = db.query('INSERT INTO users(name, surname, email, pass, pass2) values ($1, $2, $3, $4, $5) RETURNING *', [name, surname, email, hashPass, hashPass2])
                    res.json(newPerson.rows)

Так как возвращает 1


Ответы (1 шт):

Автор решения: SwaD

Вам надо вот так переделать проверку

if (row.rowCount) {
  for (let i = 0; i < row.rows.length; i++) {
    if (row.rows[i].email === email) {
      isTrue = true;
      break;
    }
  }
}
if (isTrue) {
  row.json({"message": "C данным email пользователь есть"})
} else {
  row.json({"message": " Регистрирую пользователя"})
}
→ Ссылка