Node.js Sequelize sync()不会创建所有表模型
我对使用sequelize和node.js很陌生 我正在尝试使用sequelize、postgres和node.js在模型“user”和“post”下创建两个表。问题是,只创建了“posts”表,而根本没有创建“users” 这是4个文件的代码:“models/post”、“models/user”、“app.js”和“utils/database”: “模型/帖子”:Node.js Sequelize sync()不会创建所有表模型,node.js,postgresql,sequelize.js,Node.js,Postgresql,Sequelize.js,我对使用sequelize和node.js很陌生 我正在尝试使用sequelize、postgres和node.js在模型“user”和“post”下创建两个表。问题是,只创建了“posts”表,而根本没有创建“users” 这是4个文件的代码:“models/post”、“models/user”、“app.js”和“utils/database”: “模型/帖子”: const Sequelize = require('sequelize'); const sequelize = requ
const Sequelize = require('sequelize');
const sequelize = require('../util/database');
const Post = sequelize.define('post',{
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
allowNull: false,
primaryKey: true,
},
title:{
type: Sequelize.STRING,
allowNull: false,
},
content:{
type: Sequelize.STRING,
allowNull: false,
},
tags:{
type: Sequelize.ARRAY(Sequelize.STRING),
allowNull: false,
}
});
Post.associate = (models) => {
Post.belongsTo(models.User, {
constraints: true,
onDelete: 'CASCADE'
});
}
module.exports = Post;
“模型/用户”:
const sequelize = require('../util/database');
const User = sequelize.define('user', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
allowNull: false,
primaryKey: true,
},
userName: {
type: Sequelize.STRING,
allowNull: false,
},
firstName: {
type: Sequelize.STRING,
allowNull: false,
},
lastName: {
type: Sequelize.STRING,
allowNull: false,
},
bio: {
type: Sequelize.STRING,
allowNull: false,
},
password: {
type: Sequelize.STRING,
allowNull: false,
}
})
User.associate = (models) => {
User.hasMany(models.Post);
}
module.exports = User;
“app.js”:
const express = require('express');
const bodyParser = require('body-parser');
const graphqlHttp = require('express-graphql');
const sequelize = require('./util/database');
const graphqlSchema = require('./graphql/schema');
const graphqlResolver = require('./graphql/resolvers');
app = express();
app.use(bodyParser.json());
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader(
'Access-Control-Allow-Methods',
'OPTIONS, GET, POST, PUT, PATCH, DELETE'
);
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
next();
});
app.use('/graphql', graphqlHttp({
schema: graphqlSchema,
rootValue: graphqlResolver,
graphiql: true,
formatError(err) {
if (!err.originalError) {
return err;
}
const data = err.originalError.data;
const message = err.message || 'An error occurred.';
const code = err.originalError.code || 500;
return { message: message, status: code, data: data };
}
})
);
app.use((error, req, res, next) => {
const status = error.statusCode || 500;
const message = error.message;
const data = error.data;
res.status(status).json({ message: message, data: data });
});
sequelize.sync({force: true})
.then(result => {
app.listen(8080);
})
.catch(err => {
console.log(err);
});
“utils/数据库”:
const Sequelize = require('sequelize').Sequelize;
const sequelize = new Sequelize('projectname','postgres','password',{
host: 'localhost',
dialect: 'postgres',
});
module.exports = sequelize;
当然,projectname和password将替换为真值
在UTIL/数据库中注册模型及其关联
在注册任何路由之前移动同步呼叫
utils/数据库
const sequelize = new Sequelize('projectname','postgres','password',{
host: 'localhost',
dialect: 'postgres',
});
const db = {}
const models = path.join(__dirname, 'models') // path to a models' folder
fs.readdirSync(models)
.filter(function (file) {
return (file.indexOf('.') !== 0) && (file.slice(-3) === '.js')
})
.forEach(function (file) {
var model = sequelize['import'](path.join(models, file))
db[model.name] = model
})
Object.keys(db).forEach(function (modelName) {
if (db[modelName].associate) {
db[modelName].associate(db)
}
})
module.exports = sequelize
谢谢,根据你的回答写了一些东西,它成功了!如果您愿意,我可以分享我编写的代码: