我想通過繼承現有的DataType.Integer
的所有默認行爲來定義Sequelize
中的自定義數據類型。這裏的基本思想是定義一個新類型並覆蓋valueOf
和toString
方法。如何在Sequelize中添加自定義數據類型ORM
Sequelize文檔不包含任何與此主題相關的信息。如果有人能幫助我,這將是非常好的。
我想通過繼承現有的DataType.Integer
的所有默認行爲來定義Sequelize
中的自定義數據類型。這裏的基本思想是定義一個新類型並覆蓋valueOf
和toString
方法。如何在Sequelize中添加自定義數據類型ORM
Sequelize文檔不包含任何與此主題相關的信息。如果有人能幫助我,這將是非常好的。
https://github.com/sequelize/sequelize/blob/master/lib/data-types.js包含續集數據類型。
具體而言,https://github.com/sequelize/sequelize/blob/master/lib/data-types.js#L251-L273顯示DataTypes.INTEGER如何從DataTypes.NUMBER繼承使用NUMBER.inherits(fn)
。
那些從ABSTRACT繼承。您可以覆蓋您的繼承數據類型的toString()
方法,如https://github.com/sequelize/sequelize/blob/master/lib/data-types.js#L62-L64所示。免責聲明:由於未公開記錄,我不確定這些API有多穩定,並且由於未來可能發生變化而謹慎。
要Sequelize擴展數據類型:
class DataTypes_IP extends DataTypes.ABSTRACT {
constructor() {
super()
this.key = 'IP'
}
toSql() {
return 'VARBINARY(16)'
}
// Todo
validate (value) {
// const Validator = require('./utils/validator-extras').validator
// if (!Validator.isDate(String(value))) {
// throw new sequelizeErrors.ValidationError(util.format('%j is not a valid date', value))
// }
return true
}
_sanitize (value) {
return new IP(value)
}
_isChanged (value, originalValue) {
if (value === originalValue) return false
if (
value instanceof IP &&
originalValue instanceof IP &&
value.toBuffer().equals(originalValue.toBuffer())
) {
return false
}
return true
}
_stringify (ip) {
return ip.toBuffer()
}
}
,並延長了數據類型
DataTypes.IP = DataTypes_IP
您可以在github上檢查相關問題。 https://github.com/sequelize/sequelize/issues/8533