gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:19:31 24 4
gpt4 key购买 nike

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

最佳答案

将所有模型定义为函数,以便您可以调用它们在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com