【问题标题】:Nodejs and Sequelize Limitations regarding creating dynamic modelsNodejs 和 Sequelize 关于创建动态模型的限制
【发布时间】:2022-02-12 02:09:00
【问题描述】:

我有一个与我的场景相关的简单问题。我有一个反应前端,管理员有一个表单来为用户定义它自己的注册表单。

  • 管理员将发送一组包含其数据类型的字段
  • 后端 NodeJs 将获取这些字段并运行一些脚本/函数以在数据库中创建具有相应数据类型的表
  • 还需要为各个表动态创建模型 我只是想办法完成它。欢迎任何替代解决方案或任何改进我的方案的建议? 提前致谢

【问题讨论】:

    标签: node.js postgresql sequelize.js


    【解决方案1】:

    您可以将所有指示的字段映射到 Sequielize 的字段定义中,例如:

        fieldName: {
            field: 'field_name',
            type: DataTypes.TEXT,
            allowNull: false
        },
    

    并调用sequelize.define,它将返回一个可用于执行查询的 Sequilize 模型:

    // NOTE "sequelize" should be an instance of Sequelize, i.e. an existing connection.
    function registerModel(tableName, modelName, fields) {
      const model = sequelize.define(modelName, {
        ...fields
      }, {
        tableName: tableName,
        timestamps: false,
      });
      return model;
    }
    

    注册一个新模型:

    const fields = [{
        fieldName: {
            field: 'field_name',
            type: DataTypes.TEXT,
            allowNull: false
        },
    }]
    const newModel = registerModel('some_table', 'someModel', fields);
    

    使用注册的模型:

      const items = await newModel.findAll({
        where: {
          // some conditions
        }
      })
    

    【讨论】:

    • 感谢您的快速回复?。今天让我试试这个策略
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 2019-08-10
    • 2020-08-25
    相关资源
    最近更新 更多