在蒸气中寻找祖父母

时间:2019-06-22 18:14:40

标签: ios swift vapor

我目前正在将Vapor用于数据库,遇到了我可以寻求帮助的障碍。

我当前有一个Business对象,其中有[AccessPoint]个孩子。每个AccessPoint本身都有多个[AccessPointContactMethod]

AccessPointContactMethod可以通过检查创建父子关系时Vapor设置的AccessPoint属性来引用其父accessPointID

实际上,我使用它来确保在创建新的AccessPointContactMethod时,如果父AccessPoint已经有一个具有相同地址的孩子,我们将中止发布请求:

return AccessPointContactMethod.query(on: req).group(.and) { and in
            and.filter(\.contactMethodAddress == contactMethod.contactMethodAddress)
            and.filter(\.accessPointID == contactMethod.accessPointID)
            }.all()
            .flatMap(to: AccessPointContactMethod.self) { methods in
                if methods.isEmpty {
                    return contactMethod.save(on: req)
                }
                else {
                    let duplicateContactMethodStatus = HTTPResponseStatus.custom(code: 600, reasonPhrase: "Duplicate Contact Method")
                    throw Abort(duplicateContactMethodStatus)
                }
        }

所以这导致我遇到了问题。目前,我只检查该AccessPoint中是否存在重复的地址,但是我要做的是检查属于一个AccessPoint的所有Business对象,以及是否存在是包含AccessPoint且具有相同地址的任何AccessPointContactMethod,然后我们中止请求。

因此,在我看来,我需要一种方法来访问Business祖父母对象并遍历[AccessPoint]子代以查找任何重复项。

蒸气,反应式编程,数据库对我来说都是很新的东西,所以我敢肯定我没有很好地描述这个问题,但是如果有人能够理解我正在尝试做什么并且有任何想法,我会非常感谢!

0 个答案:

没有答案