首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >korma/field能接受一列数组吗?

korma/field能接受一列数组吗?
EN

Stack Overflow用户
提问于 2018-02-12 11:35:13
回答 1查看 126关注 0票数 0

我希望能够传递一个用户定义的字段数组,其中包含需要获取的所有列的列表。korma/field能接受一列数组吗?

我本质上想要创造的是这样的东西:

代码语言:javascript
复制
(defn fetch [fields]
(->
   (korma/select* foo)

   (as-> query
         (if (not-empty? fields)
           (korma/fields query fields)
           query))

   (korma/select)))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-12 12:04:05

我假设这是因为我指定了防御实体中的实体字段。因此,我想知道是否可以覆盖defentity中指定的实体字段?

我认为你的假设是正确的,也有可能推翻这一点。如果您查看(defentity foo)生成的映射,它有一个包含所有字段的:fields键。korma.core/entity-fields并不取代已经存在的内容,但这将:

代码语言:javascript
复制
(-> foo
    (assoc :fields [:first])
    (korma/select*)
    (korma/as-sql))
=> "SELECT \"foo\".\"first\" FROM \"foo\""

我希望能够传递一个用户定义的字段数组,其中包含需要获取的所有列的列表。

代码语言:javascript
复制
(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字符串,而不是执行查询):

代码语言:javascript
复制
(fetch :first :last)
=> "SELECT \"foo\".\"first\", \"foo\".\"last\" FROM \"foo\""
(fetch)
=> "SELECT \"foo\".\"id\", \"foo\".\"first\", \"foo\".\"last\" FROM \"foo\""
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48745545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档