尝试使用以下依赖项创建一个新的命名空间:
(ns yourproject.path.kormastuff
(:use [korma.core]
[korma.db]))
然后像这样创建您的实体:
(defentity items
(entity-fields :item))
我认为您可能会碰壁,因为您正在尝试为核心命名而您缺少数据库。最好将这些东西推送到它自己的文件中并调用你想要的查询,如果你选择的话,可以使用别名,从其他命名空间,即:
(ns project.core
(:use [project.path.kormastuff :as kormadb]))
然后:
(select kormadb/items)
得到你的结果。那应该行得通。
在 REPL 中,只需输入
items
进入命令提示符查看 Korma 将为您提供的输出。应该没有其他字段出现。如果您在 REPL 中运行(选择项目),无论您是否希望发生这种情况,它都会显示所有内容。要获得真正的输出,您可能必须在浏览器窗口或其他东西中执行(格式“%s”项)。
如果所有这些都不起作用,那么使用普通的 (select db (fields [:item])) 子句就没有什么可耻的了。你会发现无论如何你都将被迫解构以使用这些信息。
编辑:::::::
对不起,我没有解释清楚。
你不应该这样做
(select kormadb/items)
得到你想要的。你只需要调用实体本身,所以你只需要调用REPL中的项目,而不是REPL中的(选择项目)。
你会想做类似的事情
(def myQuery kormadb/items)
$ myQuery
您会看到默认情况下没有选择其他字段。
你也可以做
(let [myQuery kormadb/items]
(format "%s" myQuery))
我在这里修改,但我得到的是类似于这个:
{:table "items", :name "items", :pk :id, :db nil, :transforms (), :prepare
s (), :fields ("\"items\".\"item\""), :rel {}}
为了使用 myQuery,您需要解构上面的 hash-map。我将把它作为练习留给你学习,因为解构很重要而且很难学习,除非你自己动手,但我会给你一个开始的小地方,它不会给你答案,但不会也不抛出错误:
(let [{myAlias :fields} myQuery]
(format "%s" myAlias))