繁体   English   中英

使用 Sequelize 动态创建新表

[英]Creating new tables on the fly with Sequelize

我正在实现将数据保存到数据库的 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 的表并在那里添加数据。 我想扩展它,以便在添加新数据时可以指定表名,但我对此有点迷茫,不知道该怎么做。 提前致谢。

试试这个:

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

它对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM