首页 > 解决方案 > 通过输入动态访问字段

问题描述

我有一个如下所示的函数(this指的是 MongoDB 文档实例):

  saveResetToken() {
    return new Promise((resolve, reject) => {
      this.generateResetToken((err: Error, resetToken: string) => {
        if (err) { reject(err) }

        this.resetPasswordToken = resetToken
        this.resetPasswordExpires = Date.now() + 3600000 // 1 hour
        resolve(this.save())
      })
    })

generateResetToken只返回一个生成的resetToken.

我现在有另一种情况,我将使用基本相同的代码,除了我将访问this.resetPasswordToken&以外的不同字段this.resetPasswordExpires

所以理想情况下,我想编写和重构现有的上述函数以使其可重用。最初的目的是能够通过输入指定将要设置的字段。

就像是:

  saveResetToken(tokenField: string, tokenExpires: Date ) {
    return new Promise((resolve, reject) => {
      this.generateResetToken((err: Error, resetToken: string) => {
        if (err) { reject(err) }

        this.tokenField = resetToken
        this.tokenExpires = Date.now() + 3600000 // 1 hour
        resolve(this.save())
      })
    })
  },

标签: javascripttypescript

解决方案


经过一些测试后,我可以执行以下操作:

  saveExpirableToken(tokenField: string, tokenExpiresField: string, tokenExpiresAt: Date): Promise<void> {
    return new Promise((resolve, reject) => {
      this.generateResetToken((err: Error, resetToken: string) => {
        if (err) { reject(err) }

        this[tokenField] = resetToken
        this[tokenExpiresField] = tokenExpiresAt
        resolve(this.save())
      })
    })
  },

推荐阅读