【问题标题】:Sequelizejs: no auto-generation of methods from associationsSequelizejs:没有从关联中自动生成方法
【发布时间】:2017-11-30 21:54:46
【问题描述】:

我正在尝试使用带有 sequelize 的 feathersjs 设置 m:n 关联。我正在关注这个'instruction',但必须适应feathersjs 在此期间经历的更新。

我的钩子将已创建的用户与已创建的项目相关联:

module.exports = function (options = {}) { 
  return function (hook) {
    hook.app.service('users')
      .get(hook.data[0].user_id)
      .then(users => {
        hook.app.service('items')
          .find(hook.data[0].item_id)
          .then(benches => items.addMyusers(users));
      });

    return Promise.resolve(hook);
  };
};

我明白了:

error: Unhandled Rejection at: Promise  Promise {
  <rejected> TypeError: Cannot read property 'addMyusers' of undefined

在我的用户模型定义下,我将关联设置为:

  users.associate = function (models) {
    users.belongsToMany(models.items, {
      through: {
        model: 'favorites-items',
        unique: false
      },
      foreignKey: 'item_id',
      as: 'myitems',
      constraints: false
    });
  };

在项目模型定义下:

  items.associate = function (models) { 
    items.belongsToMany(models.users, {
      through: {
        model: 'favorites-items',
        unique: false
      },
      as: 'myusers',
      foreignKey: 'user_id',
      constraints: false
    });
  };

为什么 addMyusers 不存在?建立关联时应该自动生成这样的方法吗?

sequelize docs中所述:

这会将方法 getUsers、setUsers、addUser、addUsers 添加到 Project, 以及 getProjects、setProjects、addProject 和 addProjects 到 User。

【问题讨论】:

    标签: javascript sequelize.js feathers-sequelize


    【解决方案1】:

    这根本不是与 sequelize 相关的问题。

    仔细查看你的错误信息:

    TypeError: 无法读取未定义的属性“addMyusers”

    不是sequelize没加方法,是你的变量items是未定义的,当然undefined没有addMyusers方法。从您发布的代码来看,items 没有在您的代码中的任何位置设置,因此它确实是未定义的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 2014-05-25
      • 2012-05-17
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多