0

我正在尝试使用带有 sequelize 的 feathersjs 设置 am:n 关联。我正在遵循这个“说明”,但必须适应更新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 不存在?建立关联时应该自动生成这样的方法吗?

续集文档中所述:

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

4

1 回答 1

0

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

仔细查看你的错误信息:

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

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

于 2018-03-24T17:29:28.127 回答