Как интегрировать sqlite3 в Sveltekit?

Я использую sqlite3 для большинства своих приложений fullstack (node ​​/ express, django / drf + svelte на переднем конце в качестве потребителя конечных точек api) и пытался выяснить, как интегрировать sqlite3.

Вот что я сделал

Я предполагаю, что вы знакомы со sveltekit. Для тех, кто новичок, вы можете попробовать Sveltekit.

  1. Я установил модуль better-sqlite3

  2. Созданный database.js' file inside src / lib 'папка

  3. Добавлен следующий код:

    импортировать sqlite из "better-sqlite3"

const DB = новый sqlite('./annadb.sqlite')

const schema = CREATE TABLE IF NOT EXISTS messages (id INTEGER NOT NULL PRIMARY KEY, заголовок TEXT NOT NULL);

DB.exec(схема)

экспорт БД по умолчанию

  1. я создал index.json.js бэкэнд-точка для получения всех статей из базы данных внутри папки src / routes со следующим кодом:

    импортировать БД из '$ lib / database.js'

экспортировать асинхронную функцию get () {const article = await DB.prepare (ВЫБРАТЬ * ИЗ сообщений) .all ()

      if (articles) {
    return {
        body: {
            articles
        }
    }
}

}

  1. Я использовал эту конечную точку внутри index.svelte (домашней страницы) следующим образом:

    загрузка асинхронной функции экспорта ({выборка}) {const res = ожидание выборки (/index.json); if (res.ok) {return {props: {article: await res.json (),},}; } return {status: res.status, error: new Error("Не удалось загрузить"),}; }
  1. Выбранные статьи затем используются следующим образом:

    вывозить артикулы; пусть latestArticles = article.articles; console.log (статьи);
      {#if latestArticles.length > 0}
    {#each latestArticles as article}
        <h2>{article.title}</h2>
    {/each}
{:else}
    <p>Articles are coming soon</p>
{/if}

**Это оно. **

2 ответа

index.json.tsу меня почему-то не заработало. Я должен был изменить его наlist.json.ts.

Кроме того, в этом обсуждении они изменили обработчик конечной точки на все GET в верхнем регистре .

Насколько я знаю, это синхронная библиотека.

Я заметил, что вы используете с better-sqlite3. Удаление await может решить вашу проблему.

Другие вопросы по тегам