javascript - 将编码 PostgreSQL 函数与 pg node.js 模块一起使用
问题描述
我正在尝试编写一个查询,将用户连同加盐哈希密码一起插入到我的表中。我用来从 postgresql 的命令行执行此操作的查询如下:
INSERT INTO users (name, email, password, salt) VALUES (someName, someEmail, encode(sha256(CONCAT('somePw','mySalt')::bytea), 'base64'), 'mySalt');
这工作得很好。现在我正在尝试使用 pg 模块从 node.js 调用此查询,但它不起作用。当我执行以下操作时(因此将查询用双引号“”括起来,这样我就可以将 base64 关键字括在单引号 '' 中),我得到一个错误:
const pg = require('pg');
const Pool = pg.Pool;
const pool = new Pool({
user: 'foo',
host: 'localhost',
database: 'bar',
password: 'password',
port: 5432,
});
pool.query("INSERT INTO users (name, email, password, salt) VALUES ($1, $2, encode(sha256(CONCAT($3,$4)::bytea), 'base64'), $4) ", [name.toString(), email.toString(), password.toString(), getSalt().toString()], (error, results) => {
if (error) {
throw error
}
}
// error: could not determine data type of parameter $4
所以我尝试对查询使用单引号 '' 并为 base64 关键字使用转义版本(''),但这也不起作用并给出相同的错误:
pool.query('INSERT INTO users (name, email, password, salt) VALUES ($1, $2, encode(sha256(CONCAT($3,$4)::bytea), \'base64\'), $4) ', [name.toString(), email.toString(), password.toString(), getSalt().toString()], (error, results) => {
if (error) {
throw error
}
}
// error: could not determine data type of parameter $4
将 base64 关键字放在不带引号中也不起作用,这会产生错误
Error: column "base64" does not exist
有谁知道在 pg 中提出这个查询的正确方法是什么?谢谢!
解决方案
推荐阅读
- python - 在单词的句子中找到句子
- javascript - 尝试在 React 中的组件之间切换/渲染
- python - 如何散列段落
- python - 如何在具有多个目标变量(多输出)的样本数据上过度/不足?
- javascript - 如何在 axios.all() 中附加标题
- javascript - Flask:加载模块脚本失败:服务器以“text/html”的非 JavaScript MIME 类型响应
- python - Pandas read_html 错误 - NoneType 对象没有属性“项目”
- python - Pandas 中的 ALTER COLUMN 等效项
- xcode - 当我打开反应原生项目文件时,Xcode 11.6 崩溃
- python - Python 奇怪的结果