Sequelize 模型不会创建每个 table 的所有字段(列)
Sequelize model doesn't create all fields (columns) of every table
我已经创建了 15 个模型,并且只是随机获取了少数 table 中的每一列。这可能是什么原因造成的?谁能帮帮我?
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
}
};
如果有人遇到这个问题并且有同样的问题,我知道我做错了什么。 sequelize.define()
每次我使用它时都会创建一个新的 table。我在不知不觉中使用 sequelize.define()
在另一个模型中创建一个模型的对象,这是不正确的。
我已经创建了 15 个模型,并且只是随机获取了少数 table 中的每一列。这可能是什么原因造成的?谁能帮帮我?
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
}
};
如果有人遇到这个问题并且有同样的问题,我知道我做错了什么。 sequelize.define()
每次我使用它时都会创建一个新的 table。我在不知不觉中使用 sequelize.define()
在另一个模型中创建一个模型的对象,这是不正确的。