我有一个用户表,我需要存储电子邮件的加密格式。我可以通过在用户模型中设置值加密为true来做到这一点。但当我试图获取基于电子邮件ID的数据时。我正在以没有加密值的纯文本格式传递电子邮件id,并尝试查找具有该值的记录。但我不能够发现,价值永远是空的。
有没有方法用解密的值查询记录,而存储的值是以加密格式存储的??
下面是我正在尝试做的代码片段。
module.exports = {
attributes: {
// ╔═╗╦═╗╦╔╦╗╦╔╦╗╦╦ ╦╔═╗╔═╗
// ╠═╝╠╦╝║║║║║ ║ ║╚╗╔╝║╣ ╚═╗
// ╩ ╩╚═╩╩ ╩╩ ╩ ╩ ╚╝ ╚═╝╚═╝
email: {
type: 'string',
required: true,
isEmail: true,
encrypt: true,
maxLength: 512,
}
}
}
在表中保存记录
await User.create({email: 'abc@domain.com'})
使用此电子邮件查找记录
let userData = await User.find({email: 'abc@domain.com'}).decrypt();
console.log('user Data', userData)
我得到的输出是空数组,而不是具有匹配记录的数组
user data []
我也试过没有解密。它也在给空值。
当然,加密数据库字段(如电子邮件)的全部目的是使网络蠕虫很难搜索特定值。
您可以尝试在搜索前加密您的搜索值。。。。像这样的。
const emailEncrypted = 'abc@domain.com'.encrypt()
let userData = await User.find({email: emailEncrypted}).decrypt()
console.log('user Data', userData)