首页 > 解决方案 > 使用 sequelize newCourse.setCategory 不是函数

问题描述

我正在对课程和类别具有 mtm 关系的课程进行粗略操作,我的模型是 2 个单独的文件

课程模式

const Sequelize = require('sequelize')
const sequelize = require('../database/connection')
const UserModel = require('./User')
const CategoryModel = require('./Category')

const Course = sequelize.define('Course', {
  id: {
    type: Sequelize.UUIDV4,
    primaryKey: true,
    defaultValue: Sequelize.UUIDV1
  },
  name: Sequelize.STRING(15),
  description: Sequelize.TEXT,
  points: Sequelize.INTEGER,
  image: Sequelize.STRING,
  createdAt: Sequelize.DATE,
  updatedAt: Sequelize.DATE,
}, {
  tableName: 'courses'
})

Course.belongsToMany(UserModel, { through: "CoursesUsers" });
Course.belongsToMany(CategoryModel, { through: "CategoryCourses" });
CategoryModel.belongsToMany(Course, { through: "CategoryCourses"  });


module.exports = Course

类别模型

const Sequelize = require('sequelize')
const sequelize = require('../database/connection')

const Category = sequelize.define('Category', {
  id: {
    type: Sequelize.UUIDV4,
    primaryKey: true,
    defaultValue: Sequelize.UUIDV1
  },
  name: Sequelize.STRING(15),
  createdAt: Sequelize.DATE,
  updatedAt: Sequelize.DATE,
}, {
  tableName: 'categories'
})

module.exports = Category

类别课程模式

'use strict';
const {
  Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
  class CategoryCourse extends Model {
    /**
     * Helper method for defining associations.
     * This method is not a part of Sequelize lifecycle.
     * The `models/index` file will call this method automatically.
     */
    static associate(models) {
      // define association here
    }
  };
  CategoryCourse.init({
    id: {
      type: Sequelize.UUIDV4,
      primaryKey: true,
      defaultValue: Sequelize.UUIDV1
    },
    courseId: DataTypes.UUID,
    categoryId: DataTypes.UUID
  }, {
    sequelize,
    modelName: 'CategoryCourse',
  });
  return CategoryCourse;
};

在我的控制器中,我正在创建新课程,然后调用 newCourse.setCategory(body.categories) 设置类别,但我收到此错误 newCourse.setCategory is not a function

标签: node.jsexpresssequelize.js

解决方案


推荐阅读