我正在使用 sails 构建一个非常简单的 API,它可以处理 participants
和 teams
。团队可能有多个参与者,因此 API 应接受多个参与者
ID,以便在创建新团队时创建关系。
参与者模型
attributes: {
name:{
type : 'string',
required : true
},
email : {
type : 'email',
required : true,
unique : true,
},
age : {
type : 'string'
}
}
团队模式
attributes: {
name:{
type : 'string',
required : true
},
logo : {
type : 'string'
},
participants:{
model: 'participant'
}
}
我可以创建一个团队并将关系成功保存到一个参与者,并将以下 JSON 传递到 API:
{
"name" : "Best Team ever",
"logo" : "http://...."
"participants" : "546bc4136911426a093cb903"
}
但是我在保存与多个参与者的关系时遇到了麻烦,我尝试将 ID 数组传递给 API,但它没有保存任何关系,无论是 ID 的传递还是 ID 的对象。
我想通过一次请求保存与多个参与者的关系。
我可以通过 sails 关系和蓝图完成此行为吗?或者我必须在 Controller 内手动执行
提前致谢。
我正在使用 sails-mongo
以防万一。
最佳答案
是的,这绝对是可能的。只需按如下方式更改您的模型:
attributes: {
name:{
type : 'string',
required : true
},
logo : {
type : 'string'
},
participants:{
collection: 'participant',
via: 'id'
}
}
然后您可以在创建团队记录时传递参与者 ID 数组。但请注意,参与者字段不会成为数据库级别团队集合的一部分。相反,waterline 将自动创建另一个包含参与者 ID 和团队 ID 映射的表。表的名称类似于 participant_id__team_participant 或类似的东西。当您使用蓝图获取团队时,将填充参与者数组。但是,如果您使用 findOne 的 find 来获取团队记录,请使用以下语法来获取参与者
Team.findOne()
.populate('participants')
.exec(function (err, team){
// do something here
})
希望能解决您的问题。如果您仍然遇到任何问题,请告诉我
关于relationship - Sails.js 保存多个关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27005631/