6

私はほとんどのフルスタック アプリケーション (node/express、django/drf + api エンドポイントのコンシューマーとしてのフロント エンドの svelte) に sqlite3 を使用しており、sqlite3 を統合する方法を見つけようとしています。

これが私がしたことです

あなたは sveltekit に精通していると思います。初めての方は、SvelteKitをご覧ください。

  1. better-sqlite3モジュールをインストールしました
  2. フォルダ内に作成されたdatabase.jsファイルsrc/lib
  3. 次のコードを追加しました。
import sqlite from 'better-sqlite3'

const DB = new sqlite('./annadb.sqlite')

const schema = `CREATE TABLE IF NOT EXISTS posts(
    id INTEGER NOT NULL PRIMARY KEY, 
    title TEXT NOT NULL 
)`;

DB.exec(schema)

export default DB
  1. 次のコードを使用して、フォルダーindex.json.js内のデータベースからすべての記事を取得するエンドポイントを作成しました。src/routes
import DB from '$lib/database.js'

export async function get() {
const articles = await DB.prepare('SELECT * FROM posts').all()

    if (articles) {
        return {
            body: {
                articles
            }
        }
    }
   
}
  1. そのエンドポイントを index.svelte (ホームページ) 内で次のように使用しました。
<script context="module">
    export async function load({ fetch }) {
        const res = await fetch(/index.json);
        if (res.ok) {
            return {
                props: {
                    articles: await res.json(),
                },
            };
        }
        return {
            status: res.status,
            error: new Error("Could not load"),
        };
    }
</script>
  1. 取得した記事は、次のように使用されます。
<script>
    export let articles;
    let latestArticles = articles.articles;
    console.log(articles);
</script>

<main>
    {#if latestArticles.length > 0}
        {#each latestArticles as article}
            <h2>{article.title}</h2>
        {/each}
    {:else}
        <p>Articles are coming soon</p>
    {/if}
</main>

それでおしまい。

4

1 に答える 1