存储
为你的 CMS 设置不同的存储方式
cms.storage()
函数允许注册不同的存储方式来保存站点数据。当注册一个存储时,它必须有一个名称,该名称将在你的文档、集合和上传中被使用。
LumeCMS 支持几种类型的存储。
文件系统
Tip
Lume 自动配置指向 src
文件夹的 src
存储。因此你不需要设置文件系统存储。
要注册文件系统存储,导入 Fs
类并使用名称注册它。例如,让我们注册一个名为 "my_files" 的文件系统存储,指向 ./files
文件夹:
import lumeCMS, { Fs } from "lume/cms/mod.ts";
const cms = lumeCMS();
const root = Deno.cwd() + "/files";
cms.storage("my_files", new Fs({ root }));
export default cms;
现在 my_files
存储可供 CMS 读取和写入内容。由于文件系统是读取和写入数据最常见的方式,因此上面的示例可以简化为以下形式:
import lumeCMS from "lume/cms/mod.ts";
const cms = lumeCMS();
cms.storage("my_files", "files");
export default cms;
正如你所看到的,如果你将字符串定义为存储,LumeCMS 会假定它是一个文件夹名称,因此会自动使用文件系统存储。另请注意,你不需要在文件夹名称前添加 Deno.cwd()
,因为 root option (默认为 Deno.cwd()
)的值被用作基础路径。
KV
Deno Kv 是一个直接构建到 Deno 运行时的键值数据库。LumeCMS 可以使用 Kv
实例来存储内容。例如:
import lumeCMS from "lume/cms/mod.ts";
import Kv from "lume/cms/storage/kv.ts";
const cms = lumeCMS();
const kv = await Deno.openKv();
cms.storage("my_values", new Kv({ kv }));
export default cms;
GitHub
允许直接从 GitHub 仓库使用 GitHub API 写入和读取值。如果你想允许没有 GitHub 帐户或权限的人员编辑站点数据,这将非常有用。
import lumeCMS from "lume/cms/mod.ts";
import GitHub from "lume/cms/storage/github.ts";
import { Octokit } from "npm:octokit";
const cms = lumeCMS();
const client = new Octokit({
auth: "xxx", // A personal access token, (一个个人访问令牌)
});
cms.storage(
"gh",
new GitHub({
client,
owner: "username",
repo: "example",
}),
);
export default cms;