繁体   English   中英

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

[英]Bookshelf.js - How to get 'hidden' fields for one query only?

我有以下Bookshelf模型:

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() )?

最好的祝福,

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

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

它提供以下功能:

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

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

就我而言,我做了以下事情:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM