指南 参考 源代码
公共 | 源代码

虚拟

继承

src/data-types.js~抽象 → 虚拟

一个未存储在数据库中的虚拟值。 例如,如果您希望在模型中提供一个默认值,该值将返回给用户但未存储在数据库中,这将很有用。

您也可以使用它来验证值,然后再进行排列和存储。 虚拟还接受返回类型和依赖字段作为参数,如果虚拟属性存在于 attributes 中,它将自动拉入额外的字段。 返回类型主要适用于依赖于 GraphQL 等类型的设置。

示例

在哈希密码之前检查密码长度
sequelize.define('user', {
  password_hash: DataTypes.STRING,
  password: {
    type: DataTypes.VIRTUAL,
    set: function (val) {
       // Remember to set the data value, otherwise it won't be validated
       this.setDataValue('password', val);
       this.setDataValue('password_hash', this.salt + val);
     },
     validate: {
        isLongEnough: function (val) {
          if (val.length < 7) {
            throw new Error("Please choose a longer password")
         }
      }
    }
  }
})

# In the above code the password is stored plainly in the password field so it can be validated, but is never stored in the DB.
带依赖字段的虚拟
{
  active: {
    type: new DataTypes.VIRTUAL(DataTypes.BOOLEAN, ['createdAt']),
    get: function() {
      return this.get('createdAt') > Date.now() - (7 * 24 * 60 * 60 * 1000)
    }
  }
}

构造函数摘要

公共构造函数
公共

构造函数(ReturnType: 抽象, fields: 数组)

公共构造函数

公共 构造函数(ReturnType: 抽象, fields: 数组) 源代码

参数

名称类型属性描述
ReturnType 抽象
  • 可选

虚拟类型的返回类型

字段 数组
  • 可选

此虚拟类型依赖的字段数组