Невозможно сохранить данные между экземплярами веб-службы в Swift с помощью Vapor-Fluent

Я пишу веб-сервис на Swift с использованием фреймворка Vapor.

Я использую FluentSQLite для сохранения данных. У меня есть модель пользователя, соответствующая SQLiteModel и Migration. Я добавил маршруты для создания нового пользователя с помощью методов публикации и возврата списка пользователей с помощью метода get, как показано ниже.

введите здесь описание изображения

Когда я впервые нажимаю на API получения, он возвращает пустой массив. После того, как я опубликую несколько пользователей, я смогу их получить. Но когда я останавливаю службу и снова запускаю, я не могу получить ранее сохраненных пользователей.

Поскольку я новичок в Vapor, я не могу понять, чего мне здесь не хватает, и все онлайн-поиски и документы не помогли. Изначально у меня не было сохранения или запроса внутри транзакции, после того, как я увидел это в документах, я тоже пробовал это, но с той же проблемой.


person Imthath    schedule 28.04.2019    source источник
comment
Вы можете сказать, где вы его размещаете? SQLite работает в памяти и создает резервные копии своего хранилища данных в файлах на диске. Хотя эта стратегия хорошо работает для разработки, она не подходит для некоторых хостинговых платформ, поскольку у них временная файловая система. Вы можете писать и читать, но содержимое будет периодически очищаться. Например, Если бы вы использовали SQLite на Heroku, вы бы потеряли всю свою базу данных хотя бы раз в 24 часа. Решением может стать переход на базу данных PostgeSQL.   -  person Ramsundar Shandilya    schedule 01.05.2019
comment
изменение файла конфигурации решило мою проблему, как указано в ответе tholo. Кроме того, я только начинаю работать с серверной частью Swift, еще нигде не размещал, но я перешел на PostgreSQL.   -  person Imthath    schedule 02.05.2019


Ответы (1)


Как выглядит ваша конфигурация для базы данных SQLite (обычно в Sources / App / configure.swift)?

Действительно ли он сохраняется на диске или просто запускает базу данных в памяти (которая исчезает при перезапуске)?

person tholo    schedule 28.04.2019
comment
Для устойчивости configure.swift должен содержать что-то вроде let sqlite = try SQLiteDatabase(storage: .file(path: "db.sqlite")). См. Документацию по Начало работы с SQLite: конфигурация - person l --marc l; 29.04.2019
comment
внесение изменений в файл конфигурации, упомянутых Марком, действительно решило мою проблему. - person Imthath; 29.04.2019