登录

能否在 Fluent 的 Filter 中提供一个闭包来进行过滤?

axel 2022-02-20 11:51:53

类似 Swift 标准库里的 func filter(_ isIncluded: (Self.Element) throws -> Bool) rethrows -> [Self.Element],返回一个 Bool 来判定是否应该包含该项。

2个回答

0

抱歉我的问法可能让你产生了这个误会。我对 Fluent 并不熟悉,Vapor 的文档也并没有列举出关于 filter 的每一个签名的用法,我翻看了 IDE 给出的提示,但我不敢确定 Fluent 中是不是确实没有直接的方法。


我目前的解决方案是用 compactMap,但它得到的结果是 EventLoopFuture 而不是 QueryBuilder,导致不能使用更多的 QueryBuilder 或者 paginate 等,而且根据我自己的测试,性能也远不及 Fluent 的 filter


根据你的回复,似乎框架中的确没有提供该方法,或许我的确应该向官方提出这个建议。

2022-02-22 15:55:31

还有个建议,回复别人的时候,请不要直接写答案,请在别人的答案下面进行评论。 - laowu 2022-02-22 20:54:15

官方的文档里提供了很多filter的使用方法,最终这些orm操作都会转换成sql的where语句,你先思考一下这是否能满足你的需求,至于你说的这种方法,官方目前是不支持的,甚至以后也支持不了,因为是这样是无法转换成sql的where语句的。 - laowu 2022-02-22 20:52:57

更多

0

我对这个问题感到有点疑惑,这个论坛不是一个官方的问答论坛,这里只是一个第三方的Vapor框架学习者的问答论坛。你这个问题看起来更像是一个对框架api的建议,很抱歉,发这种建议在这个问题论坛很显然是没有用的。


Fluent的filter方法建议查看官方的文档进行使用 文档

2022-02-21 12:51:57

更多