Bookshelf.js – 如何获得一个查询“隐藏”字段?

我有以下书架模型:

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 } 

有没有办法使捷径插件和获取密码,而不必直接使用knexBookshelf.knex.raw() )做的事情?

最好的祝福,

       

网上收集的解决方案 "Bookshelf.js – 如何获得一个查询“隐藏”字段?"

好的,既然我find了解决办法,我会回答我自己的问题,希望它能帮助一些人:

14天前(2017年6月30日),问题#1379已合并。

它提供了以下function:

添加能力,可以使用toJSON指定的选项直接覆盖伪造期间指定的选项。

这是提交,testing显示它是如何工作的。

对于我的情况,我做了以下几点:

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

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