簡體   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