在Vapor 3中返回部分对象

时间:2019-03-22 22:45:39

标签: swift vapor

我想在另一个对象类型的响应中返回部分对象。

例如,我有一个UserProfile模型:

1004

和一个成人模特:

  var id: Int?
  var email: String
  var firstName: String?
  var lastName: String?

说我想只在“成人”回复中返回UserProfile的电子邮件地址,怎么办?

我尝试了一种处理孩子/父母关系的方法,其中我的成人模型更像:

  var id: Int?
  var nickname: String
  var type: String
  var user: User.UserProfile
  var family: Family

..但是我的响应只包含一个对象ID,但我确实想返回部分(在某些情况下甚至是完整的)对象。

谢谢。

1 个答案:

答案 0 :(得分:0)

完成此操作的方法是为模型创建一个“公共”定义,该定义将代表您从路线返回的JSON。

对于模型,您可以创建如下结构:

struct AdultResponse: Content {
    var id: Int?
    var nickname: String
    var type: String
    var email: String
    var family: Family

    init(adult: Adult) {
        self.id = adult.id
        self.nickname = adult.nickname
        self.type = adult.type
        self.email = adult.user.email
        self.family = adult.family
    }
}

然后您可以从数据库中获取Adult模型,创建一个AdultResponse并从您的路线中返回该模型。