在运行node server.js并对数据库重新设定种子时,表被丢弃续集

7jmck4yq  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(353)

我遇到了一个错误,当我在节点中对数据库执行get请求时,得到的是一个空数组。因此,我查看控制台日志,它会删除所有表(如果存在),然后创建它们,但种子文件没有运行。我可以在服务器外部运行“npm run seed”,它将为数据库播种,但当我运行node server.js时,它会一直丢弃而不播种。我甚至尝试将种子路径放在packages.json“start”中:使种子和服务器都在start上运行,但没有成功。应用程序运行得很好,但是我的一个团队成员不小心推到了主应用程序上,它把应用程序搞砸了。我不知道是什么搞砸了,因为它在git搞砸之前就已经运行了。我已经创建了一个新的回购,但现在得到同样的问题。

//package.json
 "start": "node server.js ./seeds/seed-db.js"

    //seed-db.js
     const db = require("../models");
    const productSeeds = require("./seed-products.json");

     db.sequelize.sync({ force: true }).then(function() {
      db.Market.bulkCreate([
     {
  name: "Cotton Mill Farmers Market",
  address: "401 Rome St.",
  city: "Carrollton",
  state: "GA",
  zip: "30117"
 }
    ]).then(function(dbMarkets) {
//COTTON MILL FARMERS MARKET STOCK
   dbMarkets[0].createProduct(productSeeds.broccoli).then(function() {
  db.sequelize.close();
   });

dbMarkets[1].createProduct(productSeeds.broccoli).then(function() 
 {
  db.sequelize.close();
      });
       });
    });

//控制台
执行(默认):删除表(如果存在) MarketProduct ; 执行(默认):删除表(如果存在) Product ; 执行(默认):删除表(如果存在) Markets ; 执行(默认):删除表(如果存在) Markets ; 执行(默认):如果不存在,则创建表 Markets ( id 整数非空自动增量, name 瓦尔查尔(255), address 瓦尔查尔(255), city 瓦尔查尔(255), state 瓦尔查尔(255), zip 整数,主键( id ))引擎=innodb;执行(默认):显示索引自 MarketsgrocerEZ_db 执行(默认):删除表(如果存在) Product ; 执行(默认):如果不存在,则创建表 Product ( id 整数非空自动增量, name 瓦尔查尔(255), category 枚举('肉','水果','蔬菜','杂项'), isOrganic tinyint(1),主键( id ))引擎=innodb;执行(默认):显示索引自 ProductgrocerEZ_db 执行(默认):删除表(如果存在) MarketProduct ; 执行(默认):如果不存在,则创建表 MarketProduct ( createdAt 日期时间不为空, updatedAt 日期时间不为空, MarketId 整数, ProductId 整数,主键( MarketId , ProductId ),外键( MarketId )参考文献 Markets ( id )删除级联更新级联时,外键( ProductId )参考文献 Product ( id )on delete cascade on update cascade)引擎=innodb;执行(默认):显示索引自 MarketProductgrocerEZ_db 端口3000上的应用程序侦听

5anewei6

5anewei61#

只要改变

db.sequelize.sync({ force: true }) // <-- Forces table to drop and create again

db.sequelize.sync({ force: false , alter : true })

文件编号:
如果force为true,则每个模型将在尝试创建自己的表之前运行drop table(如果存在)
改变表格以适应模型。不建议用于生产。删除模型中已删除或其类型已更改的列中的数据。
注:
如果您想根据对模型所做的更改创建/修改表,建议将其放在单独的文件中,并在需要时运行。
这是通过检查连接而不是通过运行同步来运行查询的方式,

db.sequelize
.authenticate()
.then(() => {
    console.log('Connection has been established successfully.');
})
.catch(err => {
    console.error('Unable to connect to the database:', err);
});

相关问题