运行节点server.js并重新播种db时,表将被删除。续集

时间:2018-11-10 06:16:15

标签: javascript mysql node.js sequelize.js seed

我遇到一个错误,当我在对数据库的节点中执行get请求时,我得到一个空数组。因此,我查看了控制台日志,它说它将删除所有存在的表,然后创建它们,但种子文件未运行。我可以在服务器外部运行“ npm run seed”,它将为数据库添加种子,但是在运行节点server.js时,它会不断删除而不是添加种子。我什至尝试过将种子路径放置到packages.json中的“ start”:使种子和服务器都在start上运行,但是没有运气。该应用程序运行良好,但我的团队成员之一不小心将其推到了主目录上,它弄乱了该应用程序,我不知道这是怎么回事,因为它在git messup之前就可以正常工作了。我现在创建了一个新的仓库,并遇到了同样的问题。

 //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,则删除表; 执行(默认):如果不存在Marketsid整数非空auto_increment,name VARCHAR(255),address VARCHAR(255),{{1} } VARCHAR(255),city VARCHAR(255),state整数,主键(zip))ENGINE = InnoDB; 执行中(默认):从idMarkets显示索引 执行(默认):如果存在grocerEZ_db,则删除表; 正在执行(默认):如果不存在ProductProduct整数非空auto_increment,id VARCHAR(255),name ENUM('meat','fruits' ,'vegetables','misc'),category TINYINT(1),主键(isOrganic))ENGINE = InnoDB; 执行中(默认):从idProduct显示索引 执行(默认):如果存在grocerEZ_db,则删除表; 执行(默认):如果不存在MarketProductMarketProduct DATETIME NOT NULL,createdAt DATETIME NOT NULL,updatedAt INTEGER,MarketId INTEGER,PRIMARY KEY时创建表(ProductIdMarketId),外键(ProductId)参考MarketIdMarkets)在删除级联上更新级联,外键({{1} })在更新级联上删除级联上的引用idProductId)ENGINE = InnoDB; 执行中(默认):从Productid显示索引 在PORT 3000上监听应用程序

1 个答案:

答案 0 :(得分:0)

只是改变

var value = 10;
if(value == 10) {
   console.log("Evaluate");
}
else {
    console.log("Hello");
}

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

  

DOC :

     

如果force为true,则每个模型将在存在之前运行DROP TABLE IF EXISTS   尝试创建自己的表

     

更改表格以适合模型。不建议用于生产。   删除已删除或其类型已更改的列中的数据   模型。


  

注意:

     

db.sequelize.sync,当您想要   根据您所做的更改创建/修改表   模型,建议将其放在单独的文件中并在运行时运行   是必须的。

     

这是应该通过检查连接而不是通过运行来运行查询的方式   同步

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