如何在 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
是一个同步库。
我注意到您正在使用 await
和 better-sqlite3
。删除 await
可能会解决您的问题。
【讨论】:
以上是关于如何在 Sveltekit 中集成 sqlite3?的主要内容,如果未能解决你的问题,请参考以下文章