我正在尝试从我的nodejs应用程序运行查询,以将加密数据更新为列。但是我看到下面的错误 -
错误:函数pgp_sym_encrypt(未知,未知)不存在
查询摘要
client.query('UPDATE application_test set content = pgp_sym_encrypt($2,$3) where application_id = $1', [appId, data, password], function (dbErr: any, result: any) {
done();
if (dbErr) {
reject(dbErr);
} else {
resolve();
}
});
但是当我使用postgresql客户端运行时,下面的sql工作正常:
update application_test set content = pgp_sym_encrypt('{"appId":"122345"}', 'password')
where application_id='122345';
编辑:原来我使用带有dba密码的客户端运行查询。但是从代码中,它是连接到同一数据库的不同用户。如何使用相同的数据库使pgp_sym_encrypt实用程序对其他用户可见?
答案 0 :(得分:0)
我想您需要像这样显式地键入强制调用
client.query('UPDATE application_test set content = pgp_sym_encrypt($2 ::text,$3 ::text) where application_id = $1', [appId, data, password], function (dbErr: any, result: any) {
done();
if (dbErr) {
reject(dbErr);
} else {
resolve();
}
});
P.S。
pgp_sym_encryp
功能对所有用户可见。