https://github.com/qgisk/kv
Simple kv-store for mongodb
https://github.com/qgisk/kv
keyvalue keyvaluestore kv kv-store mongodb
Last synced: 8 months ago
JSON representation
Simple kv-store for mongodb
- Host: GitHub
- URL: https://github.com/qgisk/kv
- Owner: QGIsK
- License: mit
- Created: 2021-12-21T17:27:40.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-12-29T19:35:45.000Z (over 4 years ago)
- Last Synced: 2025-08-08T21:23:04.405Z (9 months ago)
- Topics: keyvalue, keyvaluestore, kv, kv-store, mongodb
- Language: TypeScript
- Homepage:
- Size: 317 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# KV
## About
KV is a simple MongoDB based key value store.
If you're looking for a key value library that supports more than just MongoDB checkout [keyv](https://github.com/jaredwray/keyv)
If you're looking for a CLI checkout [this](https://github.com/qgisk/kv-cli)
## Installation
```bash
npm i @qgisk/kv mongoose
```
## Example
Simple quick start example
```javascript
import {KV} from '@qgisk/kv';
// or for commonjs
const {KV} = require('@qgisk/kv');
// First value is the mongodb uri, the second is your namespace.
// db uri defaults to mongodb://localhost:27017/kv
// namespace defaults to 'kv'
const kv = new KV('uri', 'namespace');
await kv.set('key', 'value');
await kv.get('key'); // value
```
## Multiple namespaces
Using multiple namespaces so you dont get conflicts
```javascript
const users = new KV(undefined, 'users');
const posts = new KV(undefined, 'posts');
await users.set('one', 'user');
await posts.set('one', 'post');
await users.get('one'); // user
await posts.get('one'); // post
```
## All values in namespace
Easily get all values in a namespace
```javascript
const users = new KV(undefined, 'users');
await users.set('one', 'user');
await users.set('two', 'user');
await users.all(); // [{key: 'users:one', value: 'user'}, {key: 'users:two', value: 'user'}]
```
## Delete a key
Delete key in your current namespace
```javascript
const users = new KV(undefined, 'users');
await users.del('one', 'user');
await users.get('one'); // undefined
```
## Clear a namespace
Clear a whole namespace
```javascript
const users = new KV(undefined, 'users');
await users.set('one', 'user');
await users.clear();
await users.get('one'); // undefined
```
## Mongoose error events
```javascript
const kv = new KV('mongodb://123/');
kv.on('error', e => console.log(e));
```
## TTL
```javascript
const kv = new KV(undefined, 'ttl');
await kv.set('test', 'hi', 5000); // 5 seconds
setTimeout(() => console.log(await kv.get('test')), 5000); // undefined
```
[MIT](https://github.com/QGIsK/kv/blob/main/LICENSE) Demian