Хобрук: Ваш путь к мастерству в программировании

Как сохранить свойство Text с помощью Clojure и appengine-magic

Поле body формы может содержать длинный текст, поэтому свойство String по умолчанию не подойдет.

В поисках того, как заставить хранилище данных использовать текст (это не часть определения объекта, насколько я помню из версии 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: не знаю, как создать ISeq из: com.google.appengine.api.datastore.Text»

(Одним заметным отличием является то, что акбар, на который я смотрю, использует appengine-magic 0.3.2.)

Я также попробовал as-text, как кратко упоминалось в https://github.com/gcv/appengine-magic#readme, но (as-text body) приводит к тому же сообщению об ошибке, что и выше.


РЕДАКТИРОВАТЬ: оказалось, что проблема заключалась не в том, чтобы получить свойство Text в хранилище, а в том, чтобы понять его при его извлечении. Мой обработчик отправки вызывает сохранение, а затем перезагрузку страницы формы, и я не подумал об этом. Извините за шум.

Способ получить значение без сбоев — (.getValue body).


  • Моя идея состоит в том, что вы публикуете реальную трассировку стека. Исключение настоятельно предполагает, что вы передаете объект Text какой-то функции clojure, которая ожидает последовательность, но без фактической трассировки стека и без представления о том, как работает GAE, я понятия не имею, где искать. 01.04.2011
  • Как вы используете функцию? Я попробовал (ds/save! (Article. "foo" "bar" (ds/as-text "baz") 1 2)), вроде работает нормально. 02.04.2011

Ответы:


1

Из документации appengine-magic:

as-text: преобразует строку в com.google.appengine.api.datastore.Text.

Таким образом, вы должны передать java.lang.String в as-text.

(as-text body)
01.04.2011
  • Это то, что я имел в виду, когда сказал, что также пробовал ds/as-text, и это приводит к java.lang.RuntimeException: java.lang.IllegalArgumentException: Don't know how to create ISeq from: com.google.appengine.api. хранилище данных.Текст 01.04.2011
  • Я подтвердил с помощью type, что body является java.lang.String. 01.04.2011
  • Хорошо, извините, я не совсем понял ваш пост сначала. Не могли бы вы опубликовать свой реальный код? Потому что пример, приведенный выше, должен работать (если мои глаза не сломаны). 01.04.2011
  • Новые материалы

    Создание успешной организации по науке о данных
    "Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..

    Технологии и проблемы будущей работы
    Изучение преимуществ и недостатков технологий в образовании В быстро меняющемся мире технологии являются решающим фактором в формировании будущего работы. Многие отрасли уже были..

    Игорь Минар из Google приедет на #ReactiveConf2017
    Мы рады сообщить еще одну замечательную новость: один из самых востребованных спикеров приезжает в Братиславу на ReactiveConf 2017 ! Возможно, нет двух других кланов разработчиков с более..

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

    Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
    Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

    React on Rails
    Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

    Что такое гибкие методологии разработки программного обеспечения
    Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...