4

我正在使用带有korma的 Clojure 将 Clojure 映射存储在 Mysql 数据库中,例如使用以下结构存储映射:

(defentity users
  (table :user)
  (entity-fields :email 
                 :password 
                 :name))

在具有四列id(隐式定义)emailpassword和的表中name

所以,当我调用这段代码时,一切正常:

(insert users (values {:email "john@example.com"
                       :password "____hashed_passw___"
                       :name "J"}))

我遇到的问题是我的地图可能包含一些在数据库中没有对应列的键(我不想保留这些值)。例如:

(insert users (values {:email "john@example.com"
                       :password "____hashed_passw___"
                       :name "J"
                       :something "else"}))

会抛出错误MySQLSyntaxErrorException Unknown column 'something' in 'field list'

理想情况下,我想知道的是在 Korma 的某个地方是否有一个选项可以忽略地图中存在的额外键。这个问题可以通过dissoc保存所有这些来解决,但我更愿意在我这样做之前找出是否有内置的方法(或任何其他更好的想法)。

4

1 回答 1

2

不,您必须从地图中删除额外的键/值对。可以说,科尔马可以根据辩护理由将它们移除。

我建议您在https://github.com/korma/Korma上提出它作为功能请求,或者考虑自己添加它。维护者 Chris Granger 很容易交谈,并且可能会考虑您的想法。

于 2012-10-03T15:04:39.273 回答