Допустим, я хочу хранить сообщения чата локально в приложении Ionic 4, но я не хочу удалять и вставлять каждые n
секунд. Могу ли я использовать отдельный файл SQLite и просто убедиться, что я очищаю записи и хорошо с этим?
Правильно, поэтому по соображениям безопасности и другим аспектам я пишу приложение для чата и пришел к выводу, что лучше всего будет иметь файл SQLite, в котором могут храниться все сообщения. Теперь я вас уже слышу, вероятно, прежде чем вы дойдете до этой части, скажите: «Эй! У Ionic 4 и Cordova уже есть плагин для этого !! И он основан на SQLite !!» Вы были бы правы, однако, он сохраняется как пара ключ / значение и не допускает никаких типов запросов или объединений таблиц. Доступны следующие методы (получить, установить, длина, удалить, forEach). То, что я хотел бы, это простое обновление (). Единственное, что я могу увидеть здесь, это подход noSQL, где обновление - это просто удаление и повторная вставка.
Вот пример того, что будет храниться:
{
conversations: [
{id: 1,
people: ["Christian", "Sara"],
messages: [
{id: 1, author: "Christian" content: "hi", date: <date>},
{id: 2, author: "Sara", content: "foo", date: <date>},
{id: 3 ...}
]
},
{id: 2, person: "Laura", messages: [{}, {}, {}]
]
}
По сути, я бы хотел сделать INSERT INTO messages WHERE id = :id
или что-то подобное, а не что-то вроде:
function update(){
const oldMessages = this.storage.forEach('messages')
.then(chat => {
//loop over the chat and store each chat object in the old array,
}
// set an interval that will retrieve the new messages
//and append them into the old messages, then finally delete the old key/value storage and then
db.set('messagesChristianAndSara', messageArrayOfObjects)
}
Я думаю, что это ситуация, в которой я бы оказался. Там, где я предпочел бы просто вставить или вставить объект.
Может быть, есть способ, но в документах не так ясно об этом.