[英]Can korma/fields take an array of columns?
我希望能夠傳遞用戶定義的字段數組,其中包含需要提取的所有列的列表。 科爾馬/字段可以采用一列列嗎?
我本質上想要創建的是這樣的:
(defn fetch [fields]
(->
(korma/select* foo)
(as-> query
(if (not-empty? fields)
(korma/fields query fields)
query))
(korma/select)))
我假設這是因為我已指定了指定的實體字段。 因此,我想知道是否有可能覆蓋
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)))
在此示例中,我使用了可變參數args來鏡像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\""
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.