下面的sqlite3 comand给salt的值是[object Object],而数据库有一个字符串值,为什么呢?

628mspwn  于 2023-04-06  发布在  SQLite
关注(0)|答案(1)|浏览(117)
let salt = db.get(`SELECT salt FROM users WHERE username = ?`, [username]);

数据库应该返回数据库中的字符串,该字符串是通过以下代码放置的:

var salt = CryptoJS.lib.WordArray.random(128/8).toString();
db.run(`INSERT INTO users (username, password, salt) VALUES (?, ?, ?)`, [username, hashString, salt]);
tvmytwxo

tvmytwxo1#

如果你还没有,我建议你查看一下get()的文档,其中明确提到它的返回值“* 是一个包含第一行值的对象。属性名对应于结果集的列名。不可能通过列索引访问它们;唯一支持的方式是按列名。*”
因此,您的代码应该引用您希望提取到变量的列:

let salt = db.get(`SELECT salt FROM users WHERE username = ?`, [username]).salt;

相关问题