Key-value store with node:sqlite (Node.js v22.5.0 or higher is required)
npm install node-sqlite-kv
# or
yarn add node-sqlite-kv
# or
pnpm add node-sqlite-kv
# or
bun add node-sqlite-kvimport { KVSync } from "node-sqlite-kv";
const kv = new KVSync({
// use :memory: for in-memory storage
// path is optional, defaults to :memory:
path: "./data.sqlite",
// optional journal mode
// default: DELETE
journalMode: "WAL",
});
// set values
kv.set("number", 123);
kv.set("string", "hello world");
kv.set("boolean", true);
kv.set("null", null);
kv.set("array", [1, 2, 3]);
kv.set("object", { settings: { theme: "dark" } });
kv.set("date", new Date());
// get values
kv.get("number"); // 123
kv.get("string"); // "hello world"
kv.get("boolean"); // true
kv.get("null"); // null
kv.get("array"); // [1, 2, 3]
kv.get("object"); // { settings: { theme: "dark" } }
kv.get("date"); // Date
// update values
kv.set("number", 999);
kv.get("number"); // 999
// delete values
kv.delete("array"); // [1, 2, 3]
kv.get("array"); // null
// list all entries
kv.all();
// [
// { key: "string", value: "hello world" },
// { key: "number", value: 999 },
// { key: "boolean", value: true },
// // ...
// ];
// transactions
kv.set("user:1", { name: "Andrew", age: 19 });
kv.set("user:2", { name: "Josh", age: 22 });
kv.set("user:3", { name: "Gabe", age: 20 });
// ...store what changed in transactions
const { oldValues, newValues } = kv.transaction((tx) => {
tx.set("user:1", { name: "Andrew", age: 20 });
tx.set("user:4", { name: "Kris", age: 21 });
tx.delete("user:2");
});
// delete all entries
kv.clear();Pull requests are always welcomed. For more major changes, please open an issue to discuss what you wish to change.