0
我真的很喜欢Sequelize,但有些东西我似乎无法包住我的头,并得到适当的设置。我了解数据库模式以及如何编写SQL,但是关于这种ORM有些东西我只是不明白什么时候涉及到这种类型的关系。一对一的关系,并建立联系
我的模型中的两个对象/表格需要一对一关系以及一对多关系。这是我会怎么形容呢...
用户
- 有很多媒体
- 有一个媒体称PrimaryMedia(应在用户表作为PrimaryMediaId创建FK(应在媒体表作为用户ID创建FK) )
我读过的文件几次,为了得到表创建正确的方式,但当时我不明白,从我的对象,以期望在制定者而言有什么尝试过不同的排列/干将。 IE,对于上面的例子中我会期望......
用户
- 有方法addMedia,removeMedia和setMedia
- 有方法setPrimaryMedia
什么是对的正确方法设置这两个模型对象?
编辑:我已经成功地得到了一个到一个完全工作,但一到多没有更新外键...
user.js的
...
User.hasMany(models.Media, {
as: 'Media',
foreignKeyConstraint: true
}),
User.hasOne(models.Media, {
as: 'PrimaryMedia'
}),
User.belongsTo(models.Media, {
as: 'PrimaryMedia',
foreignKey: 'PrimaryMediaId'
})
...
Media.js
...
Media.hasOne(models.User, {
as: 'User',
foreignKey: 'PrimaryMediaId'
}),
...
在行动......
Media.create({
type: 'image',
nativeURL: nativeURL,
mediumURL: mediumURL,
smallURL: smallURL
}).success(function(newMedia) {
_user.addMedium(newMedia).success(function(){ // THIS ISN'T WORKING (Media.UserId column always null)
console.log('media user set');
});
_user.setPrimaryMedia(newMedia).success(function(){ // THIS IS WORKING
console.log('user primary media set');
});
success(newMedia);
}).error(function(err) {
error(err);
});
我已经找到了问题来自开发人员的帮助。部分原因是缺乏belongsTo(),但主要是因为在稍后再次输入模型会跺脚关系。我附加了模型来续集并且工作。 –