如何使用Clojure和appengine-magic保存Text属性

时间:2011-04-01 10:26:51

标签: google-app-engine web-applications clojure google-cloud-datastore appengine-magic

表单的body字段可能包含长文本,因此默认的String属性不会。

正在寻找如何使数据存储使用Text(这不是我从Python版本中回忆的实体定义的一部分),我在ackbar博客的源代码中找到了这个:

(ns <snip>
  (:import (com.google.appengine.api.datastore
            EntityNotFoundException Text)))
<snip>
(ds/save! (Post. url title (Text. body) ts in-feed? category))

但是如果我这样做,我会得到:“java.lang.RuntimeException:java.lang.IllegalArgumentException:不知道如何从:com.google.appengine.api.datastore.Text创建ISeq”

(一个值得注意的区别是我正在看的ackbar使用了appengine-magic 0.3.2。)

我也在https://github.com/gcv/appengine-magic#readme上简要提及了as-text,但(as-text body)会导致出现与上述相同的错误消息。


编辑:原来问题实际上并不是将Text属性存入商店,而是在检索它时理解它。我的提交处理程序触发了保存,而不是重新加载表单页面,我没有想到这一点。对不起噪音。

在没有打嗝的情况下获得价值的方法是(.getValue body)

1 个答案:

答案 0 :(得分:2)

来自appengine-magic文档:

  

as-text:将字符串转换为com.google.appengine.api.datastore.Text。

因此,您应该将java.lang.String传递给as-text

(as-text body)