У меня есть простая модель со столбцом _id, как и ожидалось, но есть вторичный идентификатор, который я хотел бы использовать по умолчанию для того же значения столбца _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 при вставке новой строки, я бы хотел, чтобы оно было тем же значением, что и _id, можно ли это сделать? Если да, то как я могу этого добиться?


Вам просто нужно сообщить Sequelize по умолчанию из другого столбца:
otherId: {
type: Sequelize.TEXT,
allowNull: false,
defaultValue: Sequelize.col('_id')
}
возможно, это не то, что вы ищете, но, надеюсь, это может помочь для справки
модель
class ModelPengguna extends Model{}
ModelPengguna.init({
user_id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV1
},
name: {
type: DataTypes.VIRTUAL,
get(){
return `/${this.id}/${this.user_id}`
}
}
},{sequelize})
контролер
const lihat = await pengguna.findAll();
console.info(JSON.stringify(lihat, null, 2))
результат
[
{
"name": "/1/ae0c6760-3c54-11eb-80ed-59fb8d2c0509",
"id": 1,
"user_id": "ae0c6760-3c54-11eb-80ed-59fb8d2c0509",
"createdAt": "2020-12-12T08:33:15.991Z",
"updatedAt": "2020-12-12T08:33:15.991Z"
}
]