1

我有一个简单的模型,具有_id预期的列,但是有一个辅助 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吗?如果是这样,我该如何实现?

4

2 回答 2

2

您只需要从另一列通知 Sequelize 为默认值:

otherId: {
    type: Sequelize.TEXT,
    allowNull: false,
    defaultValue: Sequelize.col('_id')
}
于 2019-02-04T19:50:50.540 回答
0

也许这不是你要找的,但希望它可以帮助参考

模型

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.log(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"
  }
]
于 2020-12-12T09:22:46.737 回答