Javascript 为什么sequelize.sync()不同步表,除非我将模态导入到文件中?
我正在使用postgres和sequelize。我正在尝试在数据库中创建Products表。在主脚本文件(app.js)上,我调用了sequelize.sync()以将模式与数据库同步。但是,无论我尝试了多少次,表都不是在数据库中创建的。执行的唯一查询是:Javascript 为什么sequelize.sync()不同步表,除非我将模态导入到文件中?,javascript,node.js,database,postgresql,sequelize.js,Javascript,Node.js,Database,Postgresql,Sequelize.js,我正在使用postgres和sequelize。我正在尝试在数据库中创建Products表。在主脚本文件(app.js)上,我调用了sequelize.sync()以将模式与数据库同步。但是,无论我尝试了多少次,表都不是在数据库中创建的。执行的唯一查询是: Executing (default): SELECT 1+1 AS result 但是,当我将模态导入app.js文件时,同步会正常进行。我真的被这种行为弄糊涂了 这些是我的档案 /utils/database.js const { Se
Executing (default): SELECT 1+1 AS result
但是,当我将模态导入app.js文件时,同步会正常进行。我真的被这种行为弄糊涂了
这些是我的档案
/utils/database.js
const { Sequelize } = require("sequelize");
module.exports = new Sequelize("mydatabase", "myname", "mypassword", {
host: "localhost",
dialect: "postgres",
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000,
},
});
const { Sequelize, DataTypes } = require("sequelize");
const sequelize = require("../utils/database.js");
const Product = sequelize.define("Product", {
id: {
type: DataTypes.UUID,
defaultValue: Sequelize.UUIDV4,
allowNull: false,
primaryKey: true,
},
title: {
type: DataTypes.STRING,
},
price: {
type: DataTypes.DOUBLE,
allowNull: false,
},
imageUrl: {
type: DataTypes.STRING,
},
description: {
type: DataTypes.STRING,
},
});
// export the Modal
module.exports = Product;
const sequelize = require("./utils/database.js");
sequelize.sync()
.then(() => {
// listen
app.listen(3000, () => {
console.log("Server running...");
});
})
.catch((error) => {
console.log(error);
});
/modals/product.js
const { Sequelize } = require("sequelize");
module.exports = new Sequelize("mydatabase", "myname", "mypassword", {
host: "localhost",
dialect: "postgres",
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000,
},
});
const { Sequelize, DataTypes } = require("sequelize");
const sequelize = require("../utils/database.js");
const Product = sequelize.define("Product", {
id: {
type: DataTypes.UUID,
defaultValue: Sequelize.UUIDV4,
allowNull: false,
primaryKey: true,
},
title: {
type: DataTypes.STRING,
},
price: {
type: DataTypes.DOUBLE,
allowNull: false,
},
imageUrl: {
type: DataTypes.STRING,
},
description: {
type: DataTypes.STRING,
},
});
// export the Modal
module.exports = Product;
const sequelize = require("./utils/database.js");
sequelize.sync()
.then(() => {
// listen
app.listen(3000, () => {
console.log("Server running...");
});
})
.catch((error) => {
console.log(error);
});
/app.js
const { Sequelize } = require("sequelize");
module.exports = new Sequelize("mydatabase", "myname", "mypassword", {
host: "localhost",
dialect: "postgres",
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000,
},
});
const { Sequelize, DataTypes } = require("sequelize");
const sequelize = require("../utils/database.js");
const Product = sequelize.define("Product", {
id: {
type: DataTypes.UUID,
defaultValue: Sequelize.UUIDV4,
allowNull: false,
primaryKey: true,
},
title: {
type: DataTypes.STRING,
},
price: {
type: DataTypes.DOUBLE,
allowNull: false,
},
imageUrl: {
type: DataTypes.STRING,
},
description: {
type: DataTypes.STRING,
},
});
// export the Modal
module.exports = Product;
const sequelize = require("./utils/database.js");
sequelize.sync()
.then(() => {
// listen
app.listen(3000, () => {
console.log("Server running...");
});
})
.catch((error) => {
console.log(error);
});
上述代码无法同步。但是如果我将模态导入到这个文件中,它就可以正常工作
const sequelize = require("./utils/database.js");
// importing Product modal
const Product = require("./models/product.js");
sequelize.sync()
.then(() => {
// listen
app.listen(3000, () => {
console.log("Server running...");
});
})
.catch((error) => {
console.log(error);
});
如果要使用sync()函数,是否总是需要将所有modals导入app.js文件?稍微更改一下文件结构,如下图所示
/utils/database.js
const { Sequelize } = require("sequelize");
const sequelize = new Sequelize("mydatabase", "myname", "mypassword", {
host: "localhost",
dialect: "postgres",
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000,
},
});
const db = {};
db.Sequelize = Sequelize;
db.sequelize = sequelize;
module.exports = db;
/modals/product.js
const { DataTypes } = require("sequelize");
const db = require("../utils/database.js");
const Product = db.sequelize.define("Product", {
id: {
type: DataTypes.UUID,
defaultValue: db.Sequelize.UUIDV4,
allowNull: false,
primaryKey: true,
},
title: {
type: DataTypes.STRING,
},
price: {
type: DataTypes.DOUBLE,
allowNull: false,
},
imageUrl: {
type: DataTypes.STRING,
},
description: {
type: DataTypes.STRING,
},
});
// export the Modal
module.exports = Product;