通过提供req.body无法创建模型

时间:2019-07-03 13:19:26

标签: node.js sequelize.js

我已经创建了一个用户模型并将其导出到控制器中,但是在.create()函数期间似乎无法正常工作。显示的错误是TypeError:userModel.create不是一个函数,它应该已经创建了表

'use strict';


module.exports = function(sequelize, DataTypes) {
    const User = sequelize.define('user', {
        email: {
            type:  DataTypes.STRING,
            defaultValue:'',
            allowNull:false,
            validate: {
              notNull: true,
            }
          },
          name:{
              type:DataTypes.STRING,
              defaultValue:'',
              allowNull:true
          },
          city:{
              type:DataTypes.STRING,
              defaultValue:'',
              allowNull:true
          }
      },
      {
        freezeTableName: true,
      }
    );


    return User;
};


'use strict';


module.exports = function(sequelize, DataTypes) {
    const User = sequelize.define('user', {
        email: {
            type:  DataTypes.STRING,
            defaultValue:'',
            allowNull:false,
            validate: {
              notNull: true,
            }
          },
          name:{
              type:DataTypes.STRING,
              defaultValue:'',
              allowNull:true
          },
          city:{
              type:DataTypes.STRING,
              defaultValue:'',
              allowNull:true
          }
      },
      {
        freezeTableName: true,
      }
    );

    return User;
};

我也尝试过const userModel = require('../../../models/user').User,但是没有运气 下面是提供的模型的用户控制器

"use strict";

const userModel = require('../../../models/user')

saveUserProfile(req,res){

    userModel.create(req.body).then(user => {
        console.log("User Data", user);
        res.send({ data: user })
    });

}

module.exports = new user();

1 个答案:

答案 0 :(得分:0)

您的代码正在导出函数,而不是User对象。因此,您需要使用控制器中的依赖项来调用该函数才能调用userModel.create

我假设您的控制器知道seqeulizeDataTypes,否则您将需要导入它们并将它们传递,或直接将import放入您的model中。

依赖注入(有点)

使用下面的require语句,并从控制器中注入sequelizeDataTypes

const userModel = require('../../../models/user')(sequelize, DataTypes).User