从续集模型'define'向sqlite添加约束

时间:2013-09-03 07:20:31

标签: javascript node.js sqlite sequelize.js

我正在使用SequelizeJS为我的nodejs应用程序创建模型。我在启动文件中定义了模型定义,并在应用程序启动时sequelize.sync()。 我的问题是,我在添加到字段中的数据中有很多限制 例如:我有一个名为'source'的字段,其类型为Sequelize.ENUM,其值应该只是其中一个['pod','must','cap']。 在sqlite中,我可以选择将这些约束直接放在DB中。我如何从续集中做同样的事情?可以在sync()期间完成吗?

1 个答案:

答案 0 :(得分:0)

sequelize.define('model', {
    source1: Sequelize.ENUM('pod', 'must', 'cap'),
    source2: {
        type: Sequelize.ENUM,
        values: ['pod', 'must', 'cap']
    }

上面的代码将在sequelize中创建一个枚举类型,仅限于您提供的值。但是,sqlite does not natively support enums,这意味着该字段将只创建为文本:

..., `status` TEXT, ...

但是,在插入这些值之前,这些值仍将在javascript中验证。

在mysql / pg中,实际的枚举,仅限于创建值:

... `status` ENUM('pod', 'must', 'cap'), ...

使用枚举类型的示例也可以在http://sequelizejs.com/documentation

的文档中找到