【发布时间】:2016-10-14 13:14:04
【问题描述】:
我正在尝试将单元/集成测试添加到我的 sequelize 项目中,但在从 postgres 方言迁移到 sqlite 时遇到了问题。我正在尝试覆盖“id”上的“defaultValue”函数。这导致 CREATE TABLE 的语法正确,但在.create() 生成的 INSERT 语句中使用了原始 defaultValue。
我创建了一个minimal sample project,它说明了我所描述的问题与一个失败的测试。
下面是相关代码sn-p:
User = sequelize.define('User', {
id: {
type: Sequelize.UUID,
field: 'id',
defaultValue: sequelize.literal("uuid_generate_v1mc()"),
primaryKey: true
},
name: {
type: Sequelize.STRING,
field: "first_name"
},
});
// why doesn't setting these attributes override the default value
// provided by User.create?
User.attributes.id.defaultValue='b9c96442-2c0d-11e6-b67b-9e71128cae77';
User.tableAttributes.id.defaultValue='b9c96442-2c0d-11e6-b67b-9e71128cae77';
注入或模拟 defaultValue 函数的最佳方法是什么?
【问题讨论】:
标签: javascript postgresql sqlite sequelize.js