我希望能够传递用户定义的字段数组,其中包含需要提取的所有列的列表。 korma / fields可以采用一系列列吗?
我基本上想要创建的是这样的:
(defn fetch [fields]
(->
(korma/select* foo)
(as-> query
(if (not-empty? fields)
(korma/fields query fields)
query))
(korma/select)))
答案 0 :(得分:1)
我假设这是因为我已经指定了无效的实体字段。因此,我想知道,是否可以覆盖
defentity
中指定的实体字段?
我认为你的假设是正确的,也可以覆盖它。如果您查看由(defentity foo)
生成的地图,则其中包含所有字段的:fields
键。 korma.core/entity-fields
不会替换已经存在的内容,但这会:
(-> foo
(assoc :fields [:first])
(korma/select*)
(korma/as-sql))
=> "SELECT \"foo\".\"first\" FROM \"foo\""
我希望能够传递用户定义的字段数组,其中包含需要提取的所有列的列表。
(defn fetch [& fields]
(-> (korma/select* foo)
(as-> query
(if (seq fields)
(assoc query :fields fields)
query))
(korma/select)))
我在这个示例中使用了可变参数来镜像korma.core/entity-fields
(并使fetch
返回我测试的SQL字符串而不是执行查询):
(fetch :first :last)
=> "SELECT \"foo\".\"first\", \"foo\".\"last\" FROM \"foo\""
(fetch)
=> "SELECT \"foo\".\"id\", \"foo\".\"first\", \"foo\".\"last\" FROM \"foo\""