【发布时间】: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 模型。 (现在它被标记为未回答的问题)
标签: node.js sqlite better-sqlite3 sveltekit