Skip to content
This repository has been archived by the owner on Mar 3, 2022. It is now read-only.

daemonraco/dfdb

Repository files navigation

Build Status Codacy Badge Maintainability

DocsOnFileDB

This is a very simple noSQL database stored in a zipped file.

Warning: This module is not intended for heavy usage, but rather a simple solution for quick application in which you need a noSQL database, but you don't want use a complete solution like MongoDB or others like it.

Contents

Installation

To install this module you may run:

npm install --save dfdb

How to use

These are some basic examples you can take to use this library.

Connection

Getting connected to a database:

const { DocsOnFileDB } = require('dfdb');
let db = false;
DocsOnFileDB.connect('mydb', __dirname).then(conn => {
    db = conn;
});

If such database file doesn't exist, it will be created.

Collection

Retriving a collection pointer:

let myCollection = false;
db.collection('my_collection').then(collection => {
    myCollection = collection;
});

If such collection does not exist, it's created and initialized.

Insert a document

Adding a document to a collection:

myCollection.insert({
    name: 'John Doe',
    age: 32,
    address: {
        street: 'Washington'
        number: '233'
    }
}).then(insertedDoc => {
    // . . .
});

Update a document

Updating/replacing a document with ID 10 in a collection:

myCollection.update(10, {
    name: 'Jane Doe',
    age: 45,
    address: {
        street: 'Paris'
        number: '1521'
    }
}).then(updatedDoc => {
    // . . .
});

Remove document

Removing a document with ID 10:

myCollection.remove(10).then(() => {
    // . . .
});

Adding a field index

Adding an index for field name:

myCollection.addFieldIndex('name').then(() => {
    // . . .
});

This is required because only indexed fields can be search without incurring in long response time.

Search

Searching for a document using only indexed fields:

myCollection.find({ name: 'Jane Doe' }).then(docs => {
    // . . .
});

// Or
myCollection.findOne({ name: 'Jane Doe' }).then(doc => {
    // . . .
});

Searching for a document using indexed and unindexed fields:

myCollection.search({ name: 'Jane Doe', age: { $gt: 37 } }).then(docs => {
    // . . .
});

// Or
myCollection.searchOne({ name: 'Jane Doe', age: { $gt: 37 } }).then(doc => {
    // . . .
});

When searching for mixed index and unindexed fields, DocsOnFileDB will first look for documents that match indexed field conditions, and then filter by unindexed conditions.

More documentation

Here's some other documentation you may want to visit:

Licence

MIT © 2018 Alejandro Dario Simi