如何解决pg-promise中的QueryResultError

问题描述 投票:0回答:1

[当我在Postman中测试代码时,我看到QueryREsultError。我正在使用node.js,express.js和pg-promise。在测试中,将按预期在Postgres数据库中创建用户,但是响应将显示QueryResultError,其中包含创建的数据和我的代码中的查询,如下所示。但是,我希望响应仅显示成功消息和生成的令牌。我不知道问题出在db.none还是代码未生成令牌。在下面找到我的代码:

CREATEUSER FUNCTION

async createUser(req, res) {
    const hashedPassword = await bcrypt.hash(req.body.password, 10);
    const query = `insert into user_table(username, email, email_verified, password, role, created_at, last_login)
                  VALUES ($1, $2, $3, $4, $5, $6, $7) returning *`;
  const values = [req.body.username, req.body.email, req.body.email_verified, hashedPassword, req.body.role, 'now()', 'now()'];

  try {
    const { rows } = await db.none(query, values);
    const token = Helper.generateToken(rows[0].username);
  return res
    .status(200)
    .cookie('jwt', token, {
      httpOnly: true
    })
    .json({
      success: true
    });
} catch (err) {
    return res.json(err);
  }
},

Helper.generateToken

generateToken(username) {
    const token = jwt.sign({
      username: username
    },
      process.env.JWT_SECRET, { expiresIn: '7d' }
    );
    return token;
  }
}

错误显示

{
    "name": "QueryResultError",
    "code": 1,
    "result": {
        "command": "INSERT",
        "rowCount": 1,
        "oid": 0,
        "rows": [
            {
                "id": "8af645cd-5ce5-496a-b07f-db98f4897fee",
                "username": "juljgggg",
                "email": "[email protected]",
                "email_verified": "[email protected]",
                "password": "$2a$12$UmQJ6qKP4nhrWS9kYxySGuBIWv5eyOHzbKtjvLzRQS5qL5bGRssym",
                "role": "Subscriber",
                "created_at": "2020-01-27T13:43:38.122Z",
                "last_login": "2020-01-27T13:43:38.122Z"
            }
        ],
        "fields": [
            {
                "name": "id",
                "tableID": 42033,
                "columnID": 1,
                "dataTypeID": 2950,
                "dataTypeSize": 16,
                "dataTypeModifier": -1,
                "format": "text"
            },
            {
                "name": "username",
                "tableID": 42033,
                "columnID": 2,
                "dataTypeID": 25,
                "dataTypeSize": -1,
                "dataTypeModifier": -1,
                "format": "text"
            },
            {
                "name": "email",
                "tableID": 42033,
                "columnID": 3,
                "dataTypeID": 25,
                "dataTypeSize": -1,
                "dataTypeModifier": -1,
                "format": "text"
            },
            {
                "name": "email_verified",
                "tableID": 42033,
                "columnID": 4,
                "dataTypeID": 25,
                "dataTypeSize": -1,
                "dataTypeModifier": -1,
                "format": "text"
            },
            {
                "name": "password",
                "tableID": 42033,
                "columnID": 5,
                "dataTypeID": 25,
                "dataTypeSize": -1,
                "dataTypeModifier": -1,
                "format": "text"
            },
            {
                "name": "role",
                "tableID": 42033,
                "columnID": 6,
                "dataTypeID": 25,
                "dataTypeSize": -1,
                "dataTypeModifier": -1,
                "format": "text"
            },
            {
                "name": "created_at",
                "tableID": 42033,
                "columnID": 7,
                "dataTypeID": 1114,
                "dataTypeSize": 8,
                "dataTypeModifier": -1,
                "format": "text"
            },
            {
                "name": "last_login",
                "tableID": 42033,
                "columnID": 8,
                "dataTypeID": 1114,
                "dataTypeSize": 8,
                "dataTypeModifier": -1,
                "format": "text"
            }
        ],
        "_parsers": [
            null,
            null
        ],
        "_types": {
            "_types": {code ommitted
                }
            },
            "text": {},
            "binary": {}
        },
        "RowCtor": null,
        "rowAsArray": false,
        "duration": 40
    },
    "query": "insert into user_table(username, email, email_verified, password, role, created_at, last_login)\n                  VALUES ('juljgggg', '[email protected]', '[email protected]', '$2a$12$UmQJ6qKP4nhrWS9kYxySGuBIWv5eyOHzbKtjvLzRQS5qL5bGRssym', 'Subscriber', 'now()', 'now()') returning *",
    "received": 1
}
node.js postgresql express pg-promise
1个回答
0
投票

您确实要传递now()作为乱码,而您确实希望函数返回值。因此,请勿将其作为参数传递:

const query = `insert into user_table(username, email, email_verified, password, role, created_at, last_login)
                  VALUES ($1, $2, $3, $4, $5, now(), now()) returning *`;
const values = [req.body.username, req.body.email, req.body.email_verified, hashedPassword, req.body.role];
© www.soinside.com 2019 - 2024. All rights reserved.