Sequelize——如何获得关联的模型
Sequelize — how to get associated model?
我有两个相关的模型(为清晰起见简称)
const model = (sequelize, DataTypes) => {
const User = sequelize.define('User', {
fullName: {
type: DataTypes.STRING,
allowNull: false,
validate: {
notEmpty: true,
len: [1,255]
}
}
},
{
classMethods: {
associate: function(models) {
User.hasMany(models.Meeting, {as: 'chairedMeetings', foreignKey: 'chairmanId'})
}
}
}
)
return User
}
和
const model = (sequelize, DataTypes) => {
const Meeting = sequelize.define('Meeting', {
title: {
type: DataTypes.STRING,
allowNull: false,
validate: {
notEmpty: true,
len: [1,255]
}
}
}, {
classMethods: {
associate: function(models) {
Meeting.belongsTo(models.User, {as: 'chairman'})
}
}
}
)
return Meeting
}
module.exports = model
我创建了一个新的会议,给定一个之前创建的用户id = 1
,如下所示:
const data = {
title: 'Some amazing meeting title',
chairmanId: 1
}
Meeting.create(data, {include: [{all: true, nested: true}]}).then(meeting => {
const chairmanId = meeting.get('chairmanId') // ===> this is 1 as expected
const chairman = meeting.get('chairman') // ===> but this is undefined
}
我如何获得序列化以返回关联的记录,而无需手动通过id
进行关联和findOne
?
我明白了:
解决方案是在创建后执行reload
。
Meeting.create(data, {include: [{all: true, nested: true}]}).then(meeting => {
const chairmanId = meeting.get('chairmanId') // ===> this is 1 as expected
meeting.reload({include: [{all: true, nested: true}]}).then(reloadedMeeting => {
const chairman = reloadedMeeting.get('chairman') // ===> is a user!
})
}
我猜sequelize在创建后不会自动重新加载以防你从未真正关心你刚刚创建的模型,你只想知道它被保存了
相关文章:
- ExtJS 4:编写带有模型关联的嵌套XML
- Sequelize associations:set[Models]添加新模型,而不是关联现有模型
- 选择框中带有关联的ng模型,选项中带有ng重复
- 如何更改与Backbone集合中的模型相关联的几个元素的css属性
- 何时指定与主干中的集合/视图关联的模型
- Rails4:从Javascript调用的Action;t请参阅模型关联(NoMethodError)
- 与设计用户相关联的多个模型-根据角色选择填写一个模型
- 嵌套的XML数据和ExtJS模型关联
- 检查是否显示与当前视图模型关联的 DOM
- 煎茶触摸 2 模型关联保存不正确的数据进行存储
- 主干.js视图和模型关联
- Emberjs 深度模型关联在模板中不可用
- Django Tastypie YUI模型关联foreignKey id而不是resource_uri
- json中的Sencha Touch 2模型关联
- 余烬对来自余烬-数据模型关联的另一个控制器的数据进行排序
- 风帆模型关联[j]
- SailsJS v0.10多模型关联
- Sails.js:如何使用模型关联填充数组
- ExtJS4:何时使用完整命名空间VS仅对象名称(模型关联)
- 当提取模型关联时,Cakephp控件