【问题标题】:Sequelize model doesn't create all fields (columns) of every tableSequelize 模型不会创建每个表的所有字段(列)
【发布时间】:2021-12-08 18:27:03
【问题描述】:

我已经创建了 15 个模型,并且只是随机获取了表中少数几个列中的每一列。这可能是什么原因造成的?谁能帮帮我?

PS:我只包含了我认为与我的问题相关的代码部分

app.js:

    // imports
const express = require('express');
const bodyParser = require('body-parser');

const app = express()
const port = 5000

//Body Parser
app.use(bodyParser.urlencoded({ extended: true }));

//Database connection

const db = require("./models");
db.sequelize.sync({ force: true }).then(() => {
    console.log("Drop and re-sync db.");
  });


//listen on port 5000
app.listen(port, () => console.info('Ready To Proceed'))

country.js(仅获取 id、createdAt 和 updatedAt 等默认列)

module.exports = (sequelize, Sequelize) => {
    const Country = sequelize.define("country", {
      name: {
        type: Sequelize.STRING,
        unique: true
      },
      flag: {
          type: Sequelize.STRING
      },
      countryCode: {
          type: Sequelize.STRING
      }
    });
    return Country;
  };

cart.js(获取我定义的所有列)

module.exports = (sequelize, Sequelize) => {
    var User = sequelize.define('user');
    var Product = sequelize.define('product');
    const Cart = sequelize.define("cart", {
      quantity: {
        type: Sequelize.STRING
      }
    });
    Cart.belongsTo(User);
    Cart.belongsTo(Product);
    return Cart;
  };

index.js(同步所有模型)

const dbConfig = require("../config/db.config");

const Sequelize = require("sequelize");
const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, {
  host: dbConfig.HOST,
  dialect: dbConfig.dialect,
  port: dbConfig.PORT,
  operatorsAliases: false,

  pool: {
    max: dbConfig.pool.max,
    min: dbConfig.pool.min,
    acquire: dbConfig.pool.acquire,
    idle: dbConfig.pool.idle
  }
});

const db = {};

db.Sequelize = Sequelize;
db.sequelize = sequelize;

db.country = require("./country.model")(sequelize, Sequelize);
db.cart = require("./cart.model")(sequelize, Sequelize);

module.exports = db;

db.config.js:

module.exports = {
    HOST: "localhost",
    USER: "<<USER>>",
    PASSWORD: "<<Password>>",
    DB: "redhuntdb",
    dialect: "mysql",
    PORT: 3307(My db port is 3307),
    pool: {
      max: 15,
      min: 0,
      acquire: 30000,
      idle: 10000
    }
  };

【问题讨论】:

    标签: mysql node.js express sequelize.js


    【解决方案1】:

    如果有人遇到这个问题并遇到同样的问题,我就知道我做错了什么。 sequelize.define() 每次使用时都会创建一个新表。我在不知不觉中使用sequelize.define() 在另一个模型中创建了一个模型对象,这是不正确的。

    【讨论】:

      猜你喜欢
      • 2020-08-28
      • 2020-08-25
      • 2019-12-12
      • 2021-12-31
      • 1970-01-01
      • 2014-01-05
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多