簡體   English   中英

科爾馬/字段可以采用一列列嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM