考虑两个模型User
和Project
,其关系为“多对多”。
当我尝试这样做时: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
}
答案 0 :(得分:3)
这是因为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。