首页 > 解决方案 > 直接调用方法可以,但是用策略模式调用就不行

问题描述

当 Sequelize init instance 我有 'getBlocks' 和 'getSkills' 方法,所以我需要采用一种策略模式来知道我必须调用什么方法

  const resourceTypes = instance => ({
    Block: instance.getBlocks,
    Skill: instance.getSkills
  });

  return resourceTypes(this)[this.dataValues.type]();

但是这个电话返回给我这个投掷

TypeError: instance.get is not a function
    at BelongsToMany.get (/home/fparol4/Desktop/work/repositories/assessment-api/node_modules/sequelize/lib/associations/belongs-to-many.js:434:48)
    at Object.obj.<computed> [as Block] (/home/fparol4/Desktop/work/repositories/assessment-api/node_modules/sequelize/lib/associations/helpers.js:64:39)
    at Question.findResource (/home/fparol4/Desktop/work/repositories/assessment-api/src/api/v1/models/Question.js:29:51)
    at QuestionService.findByPk (/home/fparol4/Desktop/work/repositories/assessment-api/src/api/v1/services/QuestionService.js:183:35)
    at async show (/home/fparol4/Desktop/work/repositories/assessment-api/src/api/v1/controllers/QuestionController.js:100:22)

直接调用方法,例如:

返回 this.getBlocks()

没有投掷

标签: javascriptnode.jssequelize.js

解决方案


推荐阅读