relationship - Sails.js 保存多个关联

标签 relationship sails.js sails-mongo

我正在使用 sails 构建一个非常简单的 API,它可以处理 participantsteams 。团队可能有多个参与者,因此 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/

相关文章:

Django 关系数据库查找

ios - 这种关系是否存在逆关系

javascript - 在nodejs中处理异步数据库

sails.js - Sails js - 水线 ORM 限制或分组后排序?

objective-c - CoreData循环改变关系

python - SQLAlchemy 使用关系()

javascript - 在 beforeCreate 中访问 req.headers

javascript - NodeJS - 水线进行 4 次连续收集计数的最佳方法

javascript - 如何在 sails 应用程序中为 CSS 生成 map 文件?

node.js - 如何使用 Sails.js、sails-mong 和 Mongo DB 重命名数据库架构中的所有字段