使用Sequelize动态创建新表

时间:2018-03-05 12:51:53

标签: sql node.js schema sequelize.js

我正在实施将数据保存到数据库的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的表,并在那里添加数据。我想对此进行扩展,以便在添加新数据时可以指定表名,但我对此有点遗失,并且不知道如何操作。提前谢谢。

1 个答案:

答案 0 :(得分:0)

尝试一下:

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

对我有用。