как синхронизировать базу данных web sql - PullRequest
1 голос
/ 03 февраля 2011

Я использую ruby ​​на рельсах для разработки сайта. Я хочу, чтобы мой сайт был доступен для оффлайн. Для этого я использую базу данных Web SQL. Я хочу знать, как я могу синхронизировать онлайн и автономную базу данных. Автономная база данных создается javascript. Вот несколько вещей, которые я попробовал. Чтобы показать содержимое базы данных, я переношу данные в объект ruby ​​в контроллере, как показано

  @contacts = Contact.order("contacts.position ASC")

Я пытаюсь получить доступ к этому объекту в javascript в файле представления, как показано ниже

<script type="text/javascript">

var js_obj = <%= @contacts.to_json %>;

</script>

Это правильный путь? Как я могу просмотреть данные в переменной js_obj

Ответы [ 3 ]

0 голосов
/ 31 марта 2011

Я ненавижу встроенные скрипты. При этом в случае использования автономных баз данных ajax-запрос к контроллеру с методом, который возвращает .to_json, сам по себе не является жизнеспособным. Вместо того чтобы использовать переменную javascript и предполагать, что вы используете устаревшие базы данных веб-SQL, поскольку в настоящее время они (и странно) являются лучшим поддерживаемым стандартом для автономных БД, я бы использовал что-то вроде этого в вашем сценарии (пожалуйста, извините за мой плохой sql и держите помните, что работа в процессе). Пока код не работает, но я думаю, что идея здравая.

http://jsfiddle.net/Nevraeka/hvT6u/5/

0 голосов
/ 04 июля 2011

Существует проект с именем persistence.js ( persistencejs.org ), который представляет собой объект отображения базы данных javascript с независимыми от базы данных абстракциями.Таким образом, вам не нужно ограничивать ваше приложение базами данных WebSQL, и вы также можете поддерживать (с тем же кодом) использование локального хранилища, например.

У них также есть плагин под названием persistence.sync , который синхронизирует удаленную базу данных с базой данных сервера.У них есть пример бэк-энда, но он написан для node.js.Тем не менее, вы можете сделать один для Rails, следуя их инструкциям.На стороне сервера Rails должно быть что-то вроде this .

Кроме того, если вы решите использовать эту библиотеку, вы должны прочитать ограничения, упомянутые в документации:

  • Библиотека синхронизации синхронизируется по степени детализации каждого объекта.Он не сохраняет точные изменения для каждого отдельного свойства, поэтому могут возникать конфликты, которые необходимо разрешить
  • Он не синхронизирует отношения «многие ко многим»
  • Обработка ошибок не реализована
  • Удаление не поддерживается, но, возможно, вы можете обойти проблему, используя «удаленный» флаг
0 голосов
/ 31 марта 2011

Я бы определенно имел запасной вариант для indexedDB, так как большее количество браузеров будет его реализовывать (т.е. 9, Chrome и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...