是否有类似select-keys
的功能,但缺少键的默认值?
我要问的原因是我正在使用korma查询数据库。我发现了一个错误,即在没有匹配项时使用select-keys
并不直观。
示例:
(delete t
(where
(select-keys {:k1 "v1" :k2 "v2"} [:k1])))
与:
(delete t
(where {:k1 "v1"}))
通过科尔马翻译成类似以下内容的
delete from t where k1='v1'
好。 select-keys
仅创建我想要的查询映射。
但是:
(delete t
(where
(select-keys {:k2 "v2"} [:k1])))
与:
(delete t
(where {}))
通过科尔马翻译成类似以下内容的
delete from t
这将删除我的整个表t
:(
我曾考虑过使用(merge defaults (select-keys ...))
或创建函数select-keys-with-default
,但我觉得像(get m :blah "default")
可能应该缺少一些内置的东西。
浏览文档或提供的相关功能并没有显示出任何有用的现成的信息。
答案 0 :(得分:2)
当选择为空时,您可能根本不想执行查询。所以像这样的事情可能会做:
(when-let [selection (not-empty (select-keys ...))]
(delete t (where selection)))