Orm 在Sequelize模型中,如何将一列的值默认为与另一列的值相同?

Orm 在Sequelize模型中,如何将一列的值默认为与另一列的值相同?,orm,sequelize.js,feathers-sequelize,Orm,Sequelize.js,Feathers Sequelize,我有一个简单的模型,如预期的那样有一个\u id列,但是有一个次要id,我希望默认为\u id列的相同值。这是当前模型的外观: const sequelize = app.get('sequelize') sequelize.define('myTable', { _id: { type: Sequelize.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true }, oth

我有一个简单的模型,如预期的那样有一个
\u id
列,但是有一个次要id,我希望默认为
\u id
列的相同值。这是当前模型的外观:

const sequelize = app.get('sequelize')

sequelize.define('myTable', {
  _id: {
    type: Sequelize.INTEGER,
    allowNull: false,
    primaryKey: true,
    autoIncrement: true
  },
  otherId: {
    type: Sequelize.TEXT,
    allowNull: false
  }
  someField: {
    type: Sequelize.TEXT,
    allowNull: false
  }
})

因此,如果在插入新行时没有为
otherId
传递值,我希望它与
\u id
的值相同,可以这样做吗?如果是这样,我该如何实现这一点?

您只需从另一列通知Sequelize to default:

 otherId: {
    type: Sequelize.TEXT,
    allowNull: false,
    defaultValue: Sequelize.col('_id')
  }

也许这不是你想要的,但希望它能为你提供参考

模型

class ModelPengguna扩展了模型{}
ModelPengguna.init({
用户id:{
类型:Sequelize.UUID,
默认值:Sequelize.UUIDV1
},
姓名:{
类型:DataTypes.VIRTUAL,
得到(){
返回`/${this.id}/${this.user\u id}`
}
}
},{sequelize})
控制器

const lihat=wait pengguna.findAll();
log(JSON.stringify(lihat,null,2))
结果

[
{
“名称”:“/1/ae0c6760-3c54-11eb-80ed-59fb8d2c0509”,
“id”:1,
“用户id”:“ae0c6760-3c54-11eb-80ed-59fb8d2c0509”,
“createdAt”:“2020-12-12T08:33:15.991Z”,
“更新日期”:“2020-12-12T08:33:15.991Z”
}
]