【问题标题】:Creating new tables on the fly with Sequelize使用 Sequelize 即时创建新表
【发布时间】:2018-08-13 03:15:36
【问题描述】:

我正在实现将数据保存到数据库的 nodejs 应用程序。应用程序从 /add 接受 post 请求,它应该接受两个参数(实际数据和表名)。所有表都将包含在模型文件中定义的相同字段和数据类型。

表名说明数据将被保存在哪里。目前,在将数据保存到一个表(名为 Test)时,我的应用程序运行良好,但这应该扩展到与多个表一起使用。如果表不存在,也应该创建表。

我已经为 Sequelize 创建了模型:

// The model schema.
const modelDefinition = {
  data: {
    type: Sequelize.JSON,
    allowNull: false,
  },
};

// Define the model.
const SensorModel = db.define('Test', modelDefinition, modelOptions);

我有单独的控制器文件,其中添加了数据:

sensorController.addData = (req, res) => {
    db.sync().then(() => {
  const newSensor = {
    data: req.body.data,
  };
  return Sensor.create(newSensor).then(() => {
    res.status(201).json({
      message: ' data added!',
    });
  });
});

};

来自路由文件:

router.post('/add', sensorController.addData);

目前这只创建名为 test 的表并在那里添加数据。我想扩展它,以便在添加新数据时可以指定表名,但我对此有点迷茫,不知道该怎么做。提前致谢。

【问题讨论】:

  • 您想即时创建新表吗?你怎么知道如何称呼这些字段?他们的数据类型呢?以及是否有外键?
  • 从模型文件中使用字段和数据类型。没有使用外键等。这可能吗?还有其他建议吗?
  • 正如 Dan Bracuk 所说,我无法想象您为什么要动态创建表和列。也就是说,您可以在 Sequelize (docs.sequelizejs.com/manual/tutorial/raw-queries.html) 中执行原始查询,这样您就可以在技术上执行您想要的所有数据库操作

标签: sql node.js schema sequelize.js


【解决方案1】:

试试这个:

console.log('name_table:', youModel.getTableName())
youModel.tableName='NEW_TABLE_NAME';
console.log('name_table:', youModel.getTableName())

它对我有用。

【讨论】:

    猜你喜欢
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2020-09-05
    • 2013-08-20
    • 2018-09-24
    • 2020-08-25
    相关资源
    最近更新 更多