Bookshelf.js-如何仅对一个查询获取“隐藏”字段?

boe*_*m_s 3 javascript arrays node.js bookshelf.js knex.js

我有以下书架模型:

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

如您所见,该字段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
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以快捷地打开可见性插件并获取密码,而不必进行直接使用knexBookshelf.knex.raw())之类的操作?

最好的祝福,

boe*_*m_s 6

好的,因为我已经找到了解决方案,所以我会回答我自己的问题,希望它对某些人有帮助:

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

它提供以下功能:

添加了直接使用toJSON指定的选项来覆盖在伪造过程中指定的选项的功能。

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

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

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

hidden是一个空数组,因此它将覆盖先前的隐藏属性(hidden: ['password'])并显示密码。