如何将关系子项包装到 Vapor 中的数组中?

Posted

技术标签:

【中文标题】如何将关系子项包装到 Vapor 中的数组中?【英文标题】:How to wrap relationship children into array in Vapor? 【发布时间】:2019-12-24 16:14:21 【问题描述】:

我有父子关系,孩子需要换成数组怎么办?


event.testPrices = release.testPrices

final class Event: Content 
    var id: String
    var inProgress: Bool?
    var name: String
    var purpose: String?
    var testPrices: [TestPrice]

    init(id: String, name: String) 
        self.id = id
        self.name = name
    


extension Release  
    var testPrices: Children<Release, TestPrice> 
        return children(\.releaseId)
    

赋值给出错误:

无法将类型“儿童”的值分配给类型“[TestPrice]”

【问题讨论】:

【参考方案1】:

您可以使用查询来形成Future 数组,然后map 它。假设您在某个控制器/路由中,其中event 包含适当的Event 并且release 包含适当的Release,试试这个:


    release, event in

    _ = release.testPrices.query(on:request).all().map  testP in
        // testP is now [TestPrice]
        event.testPrices = testP
    

【讨论】:

谢谢,你知道如何使这个修改也成为响应的一部分吗? :) ***.com/questions/59472699/… 仅供参考 - 像这样放弃 Fluent 未来会导致内存泄漏

以上是关于如何将关系子项包装到 Vapor 中的数组中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Vapor 3中从JSON响应中保存父子关系

需要 ID 属性名称的 Vapor 4 关系和模型

如何解决具有不同包装常春藤类型的sbt中的依赖关系?

如何从 PHP 中的多维关联数组中删除项目

如何获取数组中json子项的值

从 Vapor 3 到 Vapor 4 的 LingoVapor 包