多对多:sequelize不会创build方法

考虑两个模型UserProject的关系多对多。

当我尝试这个: db.User.getProjects()我得到一个错误

TypeError:Object [object Object]没有方法'getProjects()'

我已经阅读了文档,这个方法应该是自动生成的
那么为什么我得到这个错误?

源代码:

project.js

 module.exports = function(sequelize, DataTypes) { var Project = sequelize.define('Project', { name: DataTypes.STRING }, { classMethods: { associate: function(models) { Project.hasMany(models.User); } } }) return Project } 

user.js的

 module.exports = function(sequelize, DataTypes) { var User = sequelize.define('User', {}, { classMethods: { associate: function(models) { User.hasMany(models.Project), User.belongsTo(models.Boss, { foreignKey: 'user_id' }) } } }) return User } 

       

网上收集的解决方案 "多对多:sequelize不会创build方法"

这是因为db.User是模型,而不是实例。

getAccessor()方法在实例上被调用。 你应该这样做:

 db.User .find( {where: {user_id: user_id}} ) .then(function(user) { return user.getProjects(); }) .then(function(projects) { //do something with your projects DAO }) .catch(function(err) {}); 

这是实例,或从您的第一个db.User.find返回的具有方法的DAO。