Node.js Sequelize sync()不会创建所有表模型

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

我对使用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 = 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

谢谢,根据你的回答写了一些东西,它成功了!如果您愿意,我可以分享我编写的代码: