sequelize 不创建 table 显示此结果:"Executing (default): SELECT 1+1 AS result"
sequelize does not creating a table shows this result : "Executing (default): SELECT 1+1 AS result"
我尝试使用 sequelize 创建一个 table 它没有错误,但没有创建 table 结果显示此消息
Executing (default): SELECT 1+1 AS result
这是我的配置文件:
const Sequelize = require('sequelize');
const sequelize = new Sequelize('*******', '******', '*******', {
dialect: 'mysql',
host: 'localhost',
});
module.exports = sequelize;
这是我的 user.js 文件:
const Sequelize = require('sequelize');
const sequelize = require('../db/mysql/config');
const User = sequelize.define('user', {
id: {
type: Sequelize.INREGER,
autoIncrement: true,
allowNull: false,
primaryKey: true
},
userName: {
type: Sequelize.STRING,
allowNull: false
},
email: {
type: Sequelize.STRING,
allowNull: false
},
password: {
type: Sequelize.STRING,
allowNull: false
}
});
module.exports = User;
这是我的 test.js 文件,我 运行 它带有节点推荐:
const sequelize = require('./db/mysql/config')
sequelize
.sync()
.then(result => {
console.log(result);
})
.catch(err => {
console.log(err);
})
如果我在配置文件中复制 user.js 代码,它工作正常
在 config.js 中导入您的 user.js 模型
一种
示例:-
const User = require('enter your path here for user.js')
User.sync();
将 user.js 文件导入 test.js 解决了我的问题。
您需要以某种方式执行模型以创建表。您可以通过在程序执行流程中要求您的模型文件来实现。
因为您没有导出您创建的表。
- 在您的文件中您创建了 user.js,因此您必须导出它并确保您正在点击(同步)table,或者您可以同步特定的 table ,或者您可以一次同步所有 tables(models)。
如何同步特定的 table(型号)?
- 在您的根文件(启动应用程序)中,导入 user.js
从 ('your path to the file')
导入 user.js
- 现在写
modelName.sync();
如何一次点击(同步)所有 table?
- 创建所有模型后,必须将其导出
- 然后在你的根文件中,写入以下内容
sequelize.sync()
我的解决过程:
=> 在
之前检查数据库所有者
- 将所有模型文件保存在
/app/models
- 模型示例:
const {DataTypes, Model} = require('sequelize');
// on importe la connexion
const sequelize = require('./../database');
class User extends Model {
}
User.init({
username: {
type: DataTypes.STRING,
allowNull: false
},
email: {
type: DataTypes.STRING,
allowNull: false,
unique: true
},
password: {
type: DataTypes.STRING,
allowNull: false
},
roles: {
type: DataTypes.JSON,
defaultValue: {"roles":[{
"role_name":"ROLE_USER",
}
]},
},
status: {
type: DataTypes.BOOLEAN,
defaultValue: false
},
birthday: {
type: DataTypes.DATE,
allowNull: false
},
filename: DataTypes.STRING,
activation_token: DataTypes.STRING,
},
{
underscored: true,
sequelize, //connexion a l'instance
timestamps: true,
tableName: 'user'
}
);
User.sync({ alter: true });
console.log("==> The table for the User model was just (re)created!");
module.exports = User;
- 在
/app/database.js
中为数据库连接创建专用文件
const {Sequelize} = require('sequelize');
const sequelize = new Sequelize(process.env.PG_URL, {});
module.exports = sequelize;
- 创建内部目录
/app/models
新文件index.js
- 在此文件中添加所需的所有模型:
const User = require('./user');
const Category = require('./category');
...
module.exports = { User, Category };
- 在项目根目录上创建新文件,如:
init_models_db.js
const models = require('./app/models'); //By default load index.js inside /app/models
const sequelize = require('./app/database');
const init_BDD = async () => {
try {
await sequelize.authenticate();
console.log('Connection has been established successfully.');
const created = sequelize.sync({force: true});
if(created) {
console.log("==> TABLE DONE !");
}
} catch (error) {
console.error('Unable to connect to the database:', error);
}
}
init_BDD();
- 执行命令:
node init_models_db.js
一旦您导入模型并将其引入控制器,然后定义路由,最后将路由添加到 index.js 或应用程序的入口点,将创建 table自动,无需直接将模型要求到您的入口点文件中;
- yourModel.js[导出模型]
- yourController.js [此处需要您的型号]
- yourRoutes.js[需要你的控制器]
- index.js | app.js | main.js[需要你的路由器]
我尝试使用 sequelize 创建一个 table 它没有错误,但没有创建 table 结果显示此消息
Executing (default): SELECT 1+1 AS result
这是我的配置文件:
const Sequelize = require('sequelize');
const sequelize = new Sequelize('*******', '******', '*******', {
dialect: 'mysql',
host: 'localhost',
});
module.exports = sequelize;
这是我的 user.js 文件:
const Sequelize = require('sequelize');
const sequelize = require('../db/mysql/config');
const User = sequelize.define('user', {
id: {
type: Sequelize.INREGER,
autoIncrement: true,
allowNull: false,
primaryKey: true
},
userName: {
type: Sequelize.STRING,
allowNull: false
},
email: {
type: Sequelize.STRING,
allowNull: false
},
password: {
type: Sequelize.STRING,
allowNull: false
}
});
module.exports = User;
这是我的 test.js 文件,我 运行 它带有节点推荐:
const sequelize = require('./db/mysql/config')
sequelize
.sync()
.then(result => {
console.log(result);
})
.catch(err => {
console.log(err);
})
如果我在配置文件中复制 user.js 代码,它工作正常
在 config.js 中导入您的 user.js 模型 一种 示例:-
const User = require('enter your path here for user.js')
User.sync();
将 user.js 文件导入 test.js 解决了我的问题。
您需要以某种方式执行模型以创建表。您可以通过在程序执行流程中要求您的模型文件来实现。
因为您没有导出您创建的表。
- 在您的文件中您创建了 user.js,因此您必须导出它并确保您正在点击(同步)table,或者您可以同步特定的 table ,或者您可以一次同步所有 tables(models)。
如何同步特定的 table(型号)?
- 在您的根文件(启动应用程序)中,导入 user.js
从 ('your path to the file')
导入 user.js- 现在写 modelName.sync();
如何一次点击(同步)所有 table?
- 创建所有模型后,必须将其导出
- 然后在你的根文件中,写入以下内容
sequelize.sync()
我的解决过程: => 在
之前检查数据库所有者- 将所有模型文件保存在
/app/models
- 模型示例:
const {DataTypes, Model} = require('sequelize');
// on importe la connexion
const sequelize = require('./../database');
class User extends Model {
}
User.init({
username: {
type: DataTypes.STRING,
allowNull: false
},
email: {
type: DataTypes.STRING,
allowNull: false,
unique: true
},
password: {
type: DataTypes.STRING,
allowNull: false
},
roles: {
type: DataTypes.JSON,
defaultValue: {"roles":[{
"role_name":"ROLE_USER",
}
]},
},
status: {
type: DataTypes.BOOLEAN,
defaultValue: false
},
birthday: {
type: DataTypes.DATE,
allowNull: false
},
filename: DataTypes.STRING,
activation_token: DataTypes.STRING,
},
{
underscored: true,
sequelize, //connexion a l'instance
timestamps: true,
tableName: 'user'
}
);
User.sync({ alter: true });
console.log("==> The table for the User model was just (re)created!");
module.exports = User;
- 在
/app/database.js
中为数据库连接创建专用文件
const {Sequelize} = require('sequelize');
const sequelize = new Sequelize(process.env.PG_URL, {});
module.exports = sequelize;
- 创建内部目录
/app/models
新文件index.js
- 在此文件中添加所需的所有模型:
const User = require('./user');
const Category = require('./category');
...
module.exports = { User, Category };
- 在项目根目录上创建新文件,如:
init_models_db.js
const models = require('./app/models'); //By default load index.js inside /app/models
const sequelize = require('./app/database');
const init_BDD = async () => {
try {
await sequelize.authenticate();
console.log('Connection has been established successfully.');
const created = sequelize.sync({force: true});
if(created) {
console.log("==> TABLE DONE !");
}
} catch (error) {
console.error('Unable to connect to the database:', error);
}
}
init_BDD();
- 执行命令:
node init_models_db.js
一旦您导入模型并将其引入控制器,然后定义路由,最后将路由添加到 index.js 或应用程序的入口点,将创建 table自动,无需直接将模型要求到您的入口点文件中;
- yourModel.js[导出模型]
- yourController.js [此处需要您的型号]
- yourRoutes.js[需要你的控制器]
- index.js | app.js | main.js[需要你的路由器]