如何在 Sveltekit 中集成 sqlite3?

Posted

技术标签:

【中文标题】如何在 Sveltekit 中集成 sqlite3?【英文标题】:How to integrate sqlite3 in Sveltekit? 【发布时间】:2021-07-03 06:21:33 【问题描述】:

我的大部分全栈应用程序(node/express、django/drf + svelte 在前端作为 api 端点的使用者)一直在使用 sqlite3,并且一直在尝试找出如何集成 sqlite3。

这就是我所做的

我假设您熟悉 sveltekit。新手可以去看看SvelteKit

    我安装了better-sqlite3模块 在src/lib 文件夹中创建了database.js 文件 添加了以下代码:
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
    我创建了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
            
        
    
   

    我在 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>
    然后按以下方式使用获取的文章:
<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>

就是这样。

【问题讨论】:

非常感谢您的编辑。我正在学习,未来几天会有所进步。 非常感谢您的报道。帮了我很多。我最初以为您在发布问题,但后来意识到您编写了使用指南。 你能分享你的 svelte.config.js 吗? @AnilBhattarai 您能否从问题中删除指南部分并将其发布为已接受的答案?这将更适合 stackoverlow 模型。 (现在它被标记为未回答的问题) 【参考方案1】:

据我所知,better-sqlite3 是一个同步库。

我注意到您正在使用 awaitbetter-sqlite3。删除 await 可能会解决您的问题。

【讨论】:

以上是关于如何在 Sveltekit 中集成 sqlite3?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 sveltekit 中保存 JWT?

如何构建 Sveltekit 应用程序

如何在 IOS 中集成 Javascript

如何在 XAMPP 中集成 sqlite 扩展?

如何在 laravel 中集成 Paypal 支付网关?

如何在flutter中集成paypal支付