Documentation
    Preparing search index...

    A virtual value that is not stored in the DB. This could for example be useful if you want to provide a default value in your model that is returned to the user but not stored in the DB.

    You could also use it to validate a value before permuting and storing it. VIRTUAL also takes a return type and dependency fields as arguments If a virtual attribute is present in attributes it will automatically pull in the extra fields as well. Return type is mostly useful for setups that rely on types like 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)
    }
    }
    }

    Type Parameters

    • T

    Hierarchy (View Summary)

    Index
    usageContext: DataTypeUseContext | undefined

    Where this DataType is being used.

    • get attributeDependencies(): string[]

      Returns string[]

    • Override this method to emit an error or a warning if the Data Type, as it is configured, is not compatible with the current dialect.

      Parameters

      Returns void

    • Whether this DataType wishes to handle NULL values itself. This is almost exclusively used by JSON and JSONB which serialize null as the JSON string 'null'.

      Returns boolean

    • Parameters

      • value: T
      • originalValue: T

      Returns boolean

    • Returns a copy of this DataType, without usage context. Designed to re-use a DataType on another Model.

      Returns this

    • Escapes a value for the purposes of inlining it in a SQL query. The resulting value will be inlined as-is with no further escaping.

      Parameters

      • value: T

        The value to escape.

      Returns string

    • This method is called when AbstractQueryGenerator needs to add a bind parameter to a query it is building. This method allows for customizing both the SQL to add to the query, and convert the bind parameter value to a DB-compatible value.

      If you only need to prepare the bind param value, implement toBindableValue instead.

      This method must return the SQL to add to the query. You can obtain a bind parameter ID by calling BindParamOptions#bindParam with the value associated to that bind parameter.

      An example of a data type that requires customizing the SQL is the GEOMETRY data type.

      Parameters

      Returns string

    • Called when a value is retrieved from the Database, and its DataType is specified. Used to normalize values from the database.

      Note: It is also possible to do an initial parsing of a Database value using AbstractDialect#registerDataTypeParser. That normalization uses the type ID from the database instead of a Sequelize Data Type to determine which parser to use, and is called before this method.

      Parameters

      • value: unknown

        The value to parse.

      Returns unknown

    • Used to normalize a value when Model#set is called. That is, when a user sets a value on a Model instance.

      Parameters

      • value: unknown

      Returns unknown

    • Converts a JS value to a value compatible with the connector library for this Data Type. Unlike escape, this value does not need to be escaped. It is passed separately to the database, which will handle escaping.

      Parameters

      • value: T

        The value to convert.

      Returns unknown

    • Returns a SQL declaration of this data type. e.g. 'VARCHAR(255)', 'TEXT', etc…

      Returns string

    • Returns string

    • Checks whether the JS value is compatible with (or can be converted to) the SQL data type. Throws if that is not the case.

      Parameters

      • value: any

      Returns asserts value is T

    • Returns string