【发布时间】:2020-09-05 18:15:19
【问题描述】:
我正在学习 node.js 和 mySQL。我已经尝试过 Sequelize 并且根据我的学习源同步应该创建新表(如果不存在)。但由于某种原因,它不会创建新表。
这是我的 database.js 文件
const Sequelize = require('sequelize');
const sequelize = new Sequelize('test-schema', 'root', 'mypassword',{dialect:'mysql', host:'localhost'});
module.exports = sequelize;
这是我的模型产品文件
const Sequelize = require('sequelize');
const sequelize = require('../util/database')
const Product = sequelize.define('product', {
id: {type: Sequelize.INTEGER, autoIncrement: true, allowNull: false, primaryKey: true},
title: Sequelize.STRING,
price: {type: Sequelize.DOUBLE, allowNull: false}
});
module.exports = Product;
这是我的 server.js 文件
const express = require('express');
const sequelize = require('./util/database')
const app = express();
app.get('/',(req,res,next)=>{
res.send({"id": "1"});
});
sequelize.sync().then(result=>{
//console.log(result);
app.listen(3000);
}).catch(err => {
console.log(err);
});
一旦我启动服务器,我就会得到
Executing (default): SELECT 1+1 AS result
我试图将我的数据库文件中的架构名称更改为错误的名称,但我得到一个错误架构不存在,所以我认为与 db 的连接是正确的
这是我安装的包
"dependencies": {
"express": "^4.17.1",
"mysql2": "^2.1.0",
"sequelize": "^5.21.10"
}
【问题讨论】:
-
您在哪里导入产品文件?
-
@Anatoly 我不导入它。Sequelize 应该遍历
sequelize.define中的所有模型并根据我的学习源创建不存在的表 -
sequelize 如何知道您从不导入的 JS 文件中的模型?
-
@Anatoly 数据库是在 sequelizer 中创建的,它通过
sequelize.define与模型(产品)连接,它也在sequelize.sync()的 server.js 中启动时运行这是我第一次使用 sequelizer,我已经用我的源代码检查了我的代码 3 次,没有发现任何错误。你认为它应该进口吗?如果是这样,那么在哪里?我认为导入它没有任何意义
标签: mysql node.js sequelize.js