【问题标题】:Automatically creating schema in Nodejs using sequelize使用 sequelize 在 Nodejs 中自动创建模式
【发布时间】:2019-06-17 05:36:09
【问题描述】:

我有一个 react+node 应用程序。我正在使用 sequelize 创建表格。我希望 sequelize 在 mysql 中自动创建 模式(不是表,如果表不存在,则会自动创建表),并用一组特定的数据填充其中一个表。

const Sequelize = require('sequelize');
const sequelize = new Sequelize('myschema','username','pass',{
    dialect:'mysql',
    host:'localhost'
});

module.exports = sequelize;

表是自动创建的,但我想在运行应用程序后自动创建模式 - 'myschema'(以避免在生产中手动创建模式)。

router.post('/somepath',(req,res,next)=>{
const 
pathname=path.join(__dirname,'../','somefile.xlsx');
  let workbook=xlsx.readFile(pathname);
  var sheet_name_list = workbook.SheetNames;
  var data = xlsx.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]);//This is an array of json objects

//updating the database.

});

我想在启动时使用 json 对象数组中的数据填充配置文件表如果还没有

【问题讨论】:

  • 您能否举例说明这两种情况的区别。
  • 现在,我必须从工作台手动创建模式,而且我不知道如何在启动时将 excel 文件中的数据导出到数据库。我想要的是,每当我启动服务器时,应该创建架构并且应该自动上传 excel 数据,如果还没有的话。

标签: mysql node.js sequelize.js


【解决方案1】:

您可以使用 sequelize-autonpm 。从数据库生成模式和模型很有帮助。

  • 在使用 sequelize-auto 之前,您需要全局安装正确的方言绑定。在你的情况下,它会是
npm install -g mysql
  • 运行以下命令
sequelize-auto -h <host> -d <database> -u <user> -x [password] -p [port]  --dialect [dialect] -o [/path/to/models] -t [tableName]

如果要为所有表生成,请跳过最后一部分,即 -t [tableName] 标志 有关详细信息,请参阅 NPM 的文档。

【讨论】:

    【解决方案2】:

    这是为了在服务器启动时在表中创建多行

    sequelize_object.sync() // is invoked at server startup
    .then(res=>{
            const pathname=path.join(__dirname,'somepath','somefile.xlsx');
            let workbook=xlsx.readFile(pathname);
            var sheet_name_list = workbook.SheetNames;
    
            var data = xlsx.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]);//array of json objects
    
            usertable.bulkCreate(data) //using sequelize to create multiple rows
            .then(response=>{console.log("Records Imported")})
            .catch(err=>{console.log(err)})
            console.log(res.data);
    })
    .catch(err=>{
            console.log(err);
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      相关资源
      最近更新 更多