【问题标题】:Sequelize define model via json schemaSequelize 通过 json 模式定义模型
【发布时间】:2018-09-08 02:07:27
【问题描述】:

我想通过json制作Sequelize模型广告。我在文档中找不到是否可以通过 json 模式进行模型声明。对于这么强大的库,没有这样的功能很奇怪。也许我找错地方了。

【问题讨论】:

  • 你的意思是JSON文件吗?比如从 JSON 文件中读取模式并创建模型?
  • 这正是我的意思。 generateModel(jsonSchema) => ..... return sequelizeModel
  • JSON 只有字符串、数字、布尔值、JSON 对象和 null 作为数据类型。因此不适合用作 Sequelize 模型模式。虽然我确信你仍然可以破解它来工作,但这根本不是一个好主意
  • 自己写实现比较快)
  • "这么强大的库居然没有这样的功能很奇怪,可能我找错地方了" --> 说到Sequelize,SO 文档

标签: javascript json schema sequelize.js


【解决方案1】:

刚刚试图找到相同问题的答案。

架构示例

{ "type": "object", "$schema": "http://json-schema.org/draft-04/schema", "id": “http://api.example.com/v1/schemas/user”、“属性”:{ “积极的”: { “类型”:“布尔” }, “有效日期”:{ “类型”:“字符串”, “格式”:“日期时间” }, “用户名”: { “类型”:“字符串”, “最大长度”:255 }, “密码”: { "description": "设置一个新密码,这是不可找回的。", “类型”:“字符串” }, “电子邮件”: { “类型”:“字符串”, “格式”:“电子邮件” }, “角色”: { “类型”:“字符串”, “枚举”:[“管理员”、“员工”、“访客”] }, “标签”:{ “类型”:“数组”, “项目”: { “类型”:“字符串” } }, "homeAddress": { "$ref": "http://api.example.com/v1/schemas/address" }, "billingAddress": { "$ref": "http://api.example.com/v1/schemas/address" } } }

使用示例

const jsonSchemas = [
  require('./schemas/address.schema.json'),
  require('./schemas/user.schema.json'),
];

const definition = Sequelizer.fromJsonSchema(jsonSchemas, 'http://api.example.com/v1/schemas/user', {
  uniqueFields: ['username'],
  mixinFields: ['homeAddress', 'billingAddress'],
  customFieldDefinitions: {
    passwordHash: {
      type: Sequelize.TEXT
    },
    password: {
      type: Sequelize.VIRTUAL,
      set(val) {
        this.setDataValue('password_hash', val + '_salt');
      }
    },
  },
});

图书馆位置github/ronalddddd/sequelizer

【讨论】:

    猜你喜欢
    • 2020-01-20
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 2017-01-27
    • 2017-04-14
    • 2018-02-07
    • 2015-07-09
    相关资源
    最近更新 更多