meowdb
TypeScript icon, indicating that this package has built-in type declarations

2.2.3 • Public • Published

MeowDB.js

MeowDB

Downloads Minified Size Vulnerabilities License Last Commit GitHub Repo stars

NPM

"Database" in JSON (Node.JS Library).

Released v2.2.3. See CHANGELOG.

Installation

  • npm install meowdb --save.

Also available in Ruby! MeowDB.rb

I recommend not using versions lower than 2.1.9 or being aware of updates to the library.

Usage

JavaScript - CommonJS require

const MeowDB = require("meowdb");

const myDatabase = new MeowDB({
    dir: __dirname,
    name: "database",
    raw: false // Defines if MeowDBObjects will be returned (optional, default: false)
});

TypeScript - ES6 import

With TypeScript you should've the esModuleInterop flag.

import MeowDB from "meowdb";
// The generic type is optional, by default it's "full" but when using the raw option, use "raw" instead of "full"
const myDatabase = new MeowDB<'full'>({
    dir: __dirname,
    name: "database",
    raw: false // Defines if MeowDBObjects will be returned (optional, default: false)
});

Example of all functions

// Creating object (it'll search property by property and if it doesn't exist, it'll create it otherwise it'll not modify the current information~)
// * where the first parameter is the ID, they're like properties of an object (same thing in most functions)
const newObject = myDatabase.create("0001", {
    name: "David",
    country: "CO",
    info: "Nothing to show"
});
console.log(newObject);

// Obtaining an object
const object = myDatabase.get("0001");
console.log(object);

// Modifying an object and saving it
object.name = "Deivid";
object.save();
console.log(object.name);

// Setting directly the value of an element
const newName = myDatabase.set("0001.info", "Just a person");
console.log(newName);

// Listing all objects
let temp = "";
Object.entries(myDatabase.all()).forEach((user) => {
    temp += `   - ${user[1].name} (ID: ${user[0]})\n`;
});
console.log(temp.trimRight());

// Finding an object
const anObject = myDatabase.find((user) => user.name === "Deivid");
console.log(anObject);

// Filtering objects
const someObjects = myDatabase.filter((user) => user.country === "CO");
console.log(someObjects);

// Deleting an object
const deletedObject = myDatabase.delete("0001");
console.log(deletedObject);

Important note while using TypeScript

You can use TypeScript Generics to create/get/update/set/find/filter the data, it doesn't matter what type you use.

const nonObjectValue = myDatabase.get<string>('0002.name');
console.log(nonObjectValue); // TS will interpret it as string

const numberValue = myDatabase.get<number>('some id here');
console.log(numberValue); // TS will interpret it as a number

const booleanValue = myDatabase.get<boolean>('some id here');
console.log(booleanValue); // TS will interpret it as a boolean

// With Objects/also works with interfaces
type Person = {
    name: string;
    country: string;
    info: string;
};

const objectValue = myDatabase.get<Person>('0002'); // This will return a MeowDBObject with the properties that you specified in the generic type
console.log(objectValue.name); // While typing '.name', you'll get *autocomplete*
// It also works when you save an MeowDBObject
objectValue.info = 'Hi!';

/// Important: Read the note in the Usage/TypeScript section.
objectValue.save(); // This will return a plain 'Person' object.

"Documentation"

  • new MeowDB(options)
    • create(id, initialValue)
    • exists(id)
    • get(id)
    • set(id, value)
    • all()
    • delete(id)
    • find(callback, id?)
    • filter(callback, id?)
  • MeowDBError

new MeowDB(options)

Creates or gets a database

  • Parameters:
    • options - An object with the options
      • options.dir - A string indicating the directory that will have the database (must be an absolute path - the folder should be created)
      • options.name - A string with the name of the database
  • Throws: MeowDBError - If any option is invalid

Methods

all()

Returns all data stored in the database

  • Returns: MeowDBObject - All data

create(id, initialValue)

Creates an element in the database with the specified ID and sets it's value

  • Parameters:
    • id - A string representing the ID of the element to create
    • initialValue - The initial value of the element
  • Returns: Object - The created element
  • Throws: MeowDBError - If the ID or initialValue is invalid

delete(id)

Deletes an element from the database

  • Parameters:
    • id - A string representing the ID of the element to delete
  • Returns: Object - The deleted element
  • Throws: MeowDBError - If the ID is invalid

exists(id)

Checks if an element exists in the database

  • Parameters:
    • id - A string representing the ID of the element to check
  • Returns: Boolean - If it exists
  • Throws: MeowDBError - If the ID is invalid

get(id)

Gets an element of the database

  • Parameters:
    • id - A string representing the ID of the element to get
  • Returns: * - The element
  • Throws: MeowDBError - If the ID is invalid

set(id, value)

Sets the value of an element in the database

  • Parameters:
    • id - A string representing the ID of the element to update
    • value - The new value of the element
  • Returns: * - The value setted
  • Throws: MeowDBError - If the ID or value is invalid

find(callback, id?)

Finds an element in the database. You should only use this function if you're finding for objects

  • Parameters:
  • callback - A function that handles all the elements and decides which one will be returned
    • id? - A string representing the ID of the root element to find another elements (optional)
  • Returns: * - The element
  • Throws: MeowDBError - If the ID or callback is invalid

filter(callback, id?)

Filters elements in the database. You should only use this function if you're filtering for objects

  • Parameters:
    • callback - A function that handles all the elements and decides which ones will be returned
    • id? - A string representing the ID of the root element to find another elements (optional)
  • Returns: * - The elements (MeowDBObject[] if they're objects, array with ID and value if not)
  • Throws: MeowDBError - If the ID or callback is invalid

MeowDBError

Extends Error, only used for error reference.

Dependents (1)

Package Sidebar

Install

npm i meowdb

Weekly Downloads

20

Version

2.2.3

License

MIT

Unpacked Size

29.5 kB

Total Files

8

Last publish

Collaborators

  • drylozu