【问题标题】:Sequelize model.create is not a functionSequelize model.create 不是函数
【发布时间】:2021-07-27 05:57:54
【问题描述】:

我是新来的续集并试图为我的新项目设置它。我检查了一些答案,但无法克服我的错误。有人可以指出如何解决这个问题。

模型/index.js

// Database service
// Connects to the database
const { Sequelize } = require('sequelize');
const path = require('path');


const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, {
    host: process.env.DB_HOST,
    dialect: 'mysql',
    logging: process.env.QUERY_LOGGING == "true" ? console.log : false,
    pool: {
        max: 10,
        min: 0,
        acquire: 30000,
        idle: 10000
      }
});


module.exports = sequelize

models/users.js

const sequelize = require("./index")
module.exports = (sequelize, DataTypes) => {
    const User = sequelize.define('Users', {
        id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            autoIncrement: true
          },
        firstName: {
             type: DataTypes.STRING,
              allowNull: false
         },
        lastName: {
             type: DataTypes.STRING
        },
        profileURL: {
             type: DataTypes.STRING
        },
        emailId: {
             type: DataTypes.STRING,
             allowNull: false 
        },
        passwordHash: {
             type: DataTypes.STRING,
            allowNull: false
        },
        street: {
             type: DataTypes.STRING
        },
        city: {
             type: DataTypes.STRING,
             allowNull: false 
        },
        phone: {
             type: DataTypes.STRING 
        },
        newsletter: {
             type: DataTypes.STRING
         },
        visibility: {
             type: DataTypes.BOOLEAN,
             defaultValue: true
        },

    },{
    });
    return User;
};

最后,我在我的服务文件中导入用户模型,如下所示:


const User = require("../models/users")

const createUser = async(req) => {
    const {firstName, lastName, profileURL, emailId, passwordHash, street, city, phone, newsletter, visibility} = req.body
    const user = await User.create({
        firstName, 
        lastName,
        profileURL, 
        emailId,
        passwordHash,
        street,
        city,
        phone,
        newsletter,
        visibility     
    })
    console.log("new user==>>", user)
    return
}

module.exports = { createUser }

但是,我收到以下错误。

TypeError: User.create is not a function

有人能指出我做错了什么吗?我意识到这可能是一件小事。

谢谢

【问题讨论】:

    标签: mysql node.js sequelize.js


    【解决方案1】:

    您导出注册User 模型而不是模型本身的函数。所以你只需要通过sequelize 实例和DataTypes 来调用它,比如database.js,你将在其中注册所有模型及其关联,或者直接在models/index.js

    const UserModelConstructor = require("../models/users")
    const { DataTypes } = require("sequelize");
    ...
    const UserModel = UserModelConstructor(sequelize, DataTypes);
    
    module.exports = {
      sequelize,
      User: UserModel
    }
    

    您可以在我的另一个回答here中查看如何注册多个模型和关联

    请不要忘记删除此行

    const sequelize = require("./index")
    

    来自models/users.js

    【讨论】:

    • 非常感谢。我参考了你的旧答案,它有效
    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 2020-04-08
    • 2018-07-30
    • 2017-04-24
    • 2019-11-17
    相关资源
    最近更新 更多