书架.js - 如何仅获取一个查询的'hidden'字段?



我有以下书架模型:

Bookshelf.model.extend({
tableName: 'users',
hidden: ['password']
}, { 
async getBy(filter) {
return await this.query({where: filter}).fetch();
}
})

如您所见,字段password是隐藏的(因为我通常不希望显示它(。
但是,我需要它来连接我的用户(在进行哈希比较时(:

const user = await userModel.getBy({email: req.body.email});
if (await bcrypt.compare(req.body.password, user.password)) { 
// here user.password is undefined because it is hidden
}

有没有办法快捷方式可见性插件并获取密码,而无需直接使用knex(Bookshelf.knex.raw()(之类的操作?

此致敬意

好的,既然我找到了解决方案,我将回答我自己的问题,希望它能帮助一些人:

14天前(30/06/2017(,问题#1379已被合并。

它提供以下功能:

添加使用直接指定给 toJSON 的选项覆盖锻造期间指定的选项的功能。

这是提交,测试显示了它是如何工作的。

就我而言,我执行以下操作:

const user = (await userModel.getBy({email: req.body.email})).toJSON({hidden: []});

hidden是一个空数组,因此它会覆盖以前的隐藏属性(hidden: ['password'](并获取要显示的密码。

最新更新