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
没有在您的代码中的任何地方设置,所以它确实是未定义的。
我正在尝试使用带有 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
没有在您的代码中的任何地方设置,所以它确实是未定义的。