2

我正在构建一个非常简单的 API,其中带有处理participantsteams. 团队可能有多个参与者,因此 API 应接受多个participantsID 以在创建新团队时创建关系。

参与者模型

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 对象。

我想通过一个请求将关系保存到多个参与者。

我可以用风帆关系和蓝图完成这种行为吗?或者我必须在控制器中手动完成

提前致谢。

sails-mongo以防万一。

4

1 回答 1

2

是的,它绝对有可能。只需按如下方式更改您的模型:

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
})

希望它能解决你的问题。如果您仍然遇到任何问题,请告诉我

于 2014-12-03T10:46:11.020 回答