提问人:Geeogee 提问时间:7/13/2023 最后编辑:Geeogee 更新时间:7/13/2023 访问量:70
将 PGP_SYM_ENCRYPT 函数与 node-postgres 一起使用 (fastify)
Use PGP_SYM_ENCRYPT function with node-postgres (fastify)
问:
我正在尝试使用 PGP_SYM_ENCRYPT 函数使用 Fastify 将加密数据保存在 PostgreSQL 数据库中。
使用此命令
添加了 pgcrypto 扩展 CREATE EXTENSION IF NOT EXISTS pgcrypto;
然后,我检查了扩展是否已成功添加到我的数据库中。
SELECT * FROM pg_extension 其中 EXTNAME = 'PGCRYPTO' 且 EXTVERSION 不为 NULL;
在我的application.ts中,我使用以下连接选项连接到postgres db:
try {
const connectionObject = {
database: config.db_name,
host: config.db_url,
user: config.db_user,
password: config.db_pass,
port: 5432,
pg: pg
}
await this.server.register(require('@fastify/postgres'), connectionObject)
await this.server.pg.query('SELECT NOW()');
console.log('DATABASE CONNECTED')
} catch(error){
console.error("CONNECTION ERROR", error);
}
await this.server.ready()
数据库正在连接,没有任何问题。然后,在我的 route.ts 中,我有一个 POST 请求,该请求从表单中获取一些数据,我尝试插入带有加密列的数据,如下所示:
server.post(
"/api/v1/api-name",
async function(request: any, reply: any) {
try {
...
// GET THE DATA
// EXECUTING SOME CHECK ON DATA VALIDITY
...
await server.pg.query(`
INSERT INTO schema_name.table_name (data1, data2, data3, data3, data5, data6)
VALUES ($1, $2, $3, $4, $5, PGP_SYM_ENCRYPT($6 ::text, $7 ::text))
`, [data1, data2, data3, data4, data5, data6, config.secretKey]);
return reply.code(201).send({
statusCode: 202
})
} catch(error: any) {
return reply.code(500).send({
statusCode: 500,
message: error.message
})
}
}
);
但是当我执行POST请求函数pgp_sym_encrypt(text,text)不存在时收到此错误
直接从 dbeaver 执行查询,插入数据并加密列
答: 暂无答案
评论
INSERT INTO schema_name.table_name (name, lastname, birthdate, birthplace, residence, fiscal_code) VALUES ('name', 'lastname', NOW(), 'birthplace', 'residence', PGP_SYM_ENCRYPT('XXXXXX00A00A000A', 'secret_key'))