mysql - Sequelize 无法使用sync() 创建表

标签 mysql node.js sequelize.js

我正在学习 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

我尝试将数据库文件中的架构名称更改为错误的名称,但收到错误消息架构不存在,因此我相信与数据库的连接是正确的

这是我安装的软件包

  "dependencies": {
    "express": "^4.17.1",
    "mysql2": "^2.1.0",
    "sequelize": "^5.21.10"
  }

最佳答案

将所有模型定义为函数,以便您可以调用它们在sequelize中注册模型,然后在database.js中注册模型,就像我在this answer中描述的那样。您可以在这个答案的问题中看到如何像函数一样定义模型。

'use strict';
module.exports = (sequelize, DataTypes) => {
  const User = sequelize.define('User', {
    id: { type: DataTypes.BIGINT, allowNull: false, autoIncrement: true, unique: true, primaryKey: true },
    first_name: DataTypes.STRING,
    last_name: DataTypes.STRING
  }, {});
  User.associate = function(models) {
    User.belongsTo(models.Role, { foreignKey: 'role_id' });
  };
  return User;
};

关于mysql - Sequelize 无法使用sync() 创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61895159/

相关文章:

php - sql 无法在另一个页面的 Session_start() 内工作

mysql - 选择查询返回错误结果

javascript - Sequelize Model.increment 返回 [undefined, number] 而不是受影响的行

mysql - GROUP BY id 在 ORDER BY time 之后

mysql - 有重复条目时如何使用!=?

javascript - 从 .env 文件访问 .pem 公钥

Node.js 中的 MySQL 隔离级别。连接中的每个查询是隔离的还是每个池都是隔离的?

node.js - Node 模块更新安装

sequelize.js - Sequelize,是否设置时间戳 :true create the createdAt updatedAt columns in the migrations?

node.js - sequelize force 标记迁移完成