Sequelizejs:没有从关联中自动生成方法

Sequelizejs: no auto-generation of methods from associations

我正在尝试使用带有 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 中所述:

This will add methods getUsers, setUsers, addUser,addUsers to Project, and getProjects, setProjects, addProject, and addProjects to User.

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

仔细查看你的错误信息:

TypeError: Cannot read property 'addMyusers' of undefined

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