npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

merodb

v2.0.0

Published

Manipulate javascript Objects as like No SQL.

Downloads

7

Readme

Build Status npm GitHub license

Documents

Look here in detail for HOW TO USE MeroDB.

How To Use

1. Installation

Npm

Install the library by using following command.

npm install --save-dev merodb

Create MeroDB Instance

const MeroDB = require("merodb");
var myDb = new MeroDB();

Browser

Load "merodb.min.js" file which is on dist folder. SAMPLE

<script src="./dist/merodb.min.js"></script>

Create Instance after the dom contents are loaded.

<script>
    document.addEventListener('DOMContentLoaded', function() {
        var myDb = new MeroDB();
    });
</script>

2. Create Collection

<collection name>, <is activate>?

MeroDB can hold multiple collection. As like a "Table" in RDBMS first create COLLECTION. The first parameter is name of collection.It should be of string type.

myDb.createCollection("continent");

"createCollection" will return false if failed, Otherwise returns true.

var isCreated = myDb.createCollection("continent");
if(isCreated === false){
    console.log("Failed to create collection");
}

Get collection list

var myCollections = myDb.getCollections();

3. Activate Collection

<collection name>

@returns: boolean (true:success, false:error)

var isCollectionActivated = myDb.use("continent");
if(isCollectionActivated == true){
    console.log("collection is activated");
}else{
    console.error(myDb.GetError());
}

4. Insert Data

<collection name>?, <data>

@returns: boolean (true:success, false:error)

| parameter | type | description | | --------------- | ------ | -----------------------------| | collection name | string | it can be omitted for active collection | | data | object | data to be inserted in a collection |

var data1 = {id:1,place:"Asia",color:"red"};
var data2 = {id:3,place:"Europe",color:"green"};
var collectionName = "continent";
myDb.insert(collectionName,data1);
myDb.insert(collectionName,data2);

However, first parameter can be omitted if a collection is activated. To activate a collection "use" method is executed.

myDb.use("continent");
var data1 = {id:5,place:"Africa",color:"blue"};
var data2 = {id:7,place:"America",color:"yellow"};
myDb.insert(data1);
myDb.insert(data2);

"use" & "insert" methods will return false if failed, Otherwise returns true. if second parameter is passed as true while creating collection, it will automatically activate the given collection.

myDb.createCollection("continent", true);
myDb.insert({id:7,place:"Antartica",color:"pink"});

Create From Existing Object

Collections can be created from existing Objects.

<collection name>?, <data>

@returns: boolean (true:success, false:error)

| paramete | type | description | | --------------- | ------ | -----------------------------| | collection name | string | it can be omitted for active collection | | data | object | existing data to be inserted in a collection |

var userData = [];
userData.push({ id: 1, name: "pk", salary: 10 });
userData.push({ id: 2, name: "ck", age: 20, salary: 20, sex: "M" });
userData.push({ id: 3, name: "dk", create: "2018-01-20", sex: "M", salary: 35 });
userData.push({ id: 4, name: "kk", salary: 25, sex: "M" });
userData.push({ id: 5, name: "kk", salary: 15 });

myDb.loadFromJsonObject("user", userData);

5. Find

<collection name>?, <condition>,<column headers>?

@returns: array of documents fulfilling given condition

| parameter | numbers | usage | description | | --------------------- | ------- | ----------------------------- |---------------------------- | | object | 1 | search condition | returns all the document satisfiying this condition | | object, array | 2 | search condition, column list | similar to case 1 but only the columns listed will be returned | | string, object, array | 3 | collection name, search condition, column list | name of collection can be explicitly applied |

var searchTableString = "user";
var searchConditionObject = { place: "Asia" };
var resultColumnArray = ["id"];

var searchResult = myDb.find(searchTableString, searchConditionObject);
var searchResult = myDb.find(searchTableString, searchConditionObject, resultColumnArray);
var searchResult = myDb.find(searchConditionObject);
var searchResult = myDb.find(searchConditionObject, resultColumnArray);

Search condition

| name | meaning | usage | |------|---------|-----| | $e | equals | { id: { $e: 200 } } | | $ne | not equal | { id: { $ne: 200 } } | | $lt | less then | { id: { $lt: 200 } } | $lte | less then or equal | { id: { $lte: 200 } } | | $gt | greater then | { id: { $gt: 200 } } | | $gte | greater then or equal | { id: { $gte: 200 } } | $bt | between | { id: [2, 5] } | | $cont | contains | { name: { $cont: "a" } } |

Uses-1
var searchResult = myDb.find("user",{ id: { $gte: 4 } });
Uses-2
var searchResult = myDb.find("user", {
            $or: [{ id: 1 }, { name: "kk" }],
            salary: 15
        });
Uses-3
var searchResult = myDb.find({
            $or: [
                { isbn: { $gte: 2000 } },
                { writer: { $ne: "df" } }
            ],
            name: { $ne: "df" },
            price:{$lt:5000}
        });

6. Update

<collection name>?, <condition>, <new value>

@returns: boolean (true:success, false:error)

| paramet | type | description | | --------------- | ------ | -----------------------------| | collection name | string | it can be omitted for active collection | | condition | object | documents fulfilling this condition will be updated with new value | | new value | object | this value will be the new value |

Note

if the <new value> does not contain "$set" key then all the the data of the document fulfilling given condition will be replaced with the <new value> object.

// create instance of MeroDB
var myDb = new MeroDB();
// create collection with name "user" and activate
myDb.createCollection("user", true);
// insert two documents in the active collection
myDb.insert({ id: 1, name: "hbeauty", enroll: "2018-01-20", sex: "M", salary: 15 });
myDb.insert({ id: 2, name: "dakc", enroll: "2017-02-28", sex: "F", salary: 35 });
// update active collection having its documents id = 2
myDb.update({ id: 2 }, { id: 1111, name: "tom" });

// get current data from active collection
var newData = myDb.find({});
console.log(newData[0], newData[1]);
// Object {id: 1, name: "hbeauty", enroll: "2018-01-20", sex: "M", salary: 15}
// Object {name: "tom"}
// the result will be as following where second document is completely replaced.

If <new value> contains "$set" key then it will update the the keys set.

// update active collection having its documents id = 2
myDb.update({ id: 2 }, { $set: { id: 1111, name: "tom" } });

// get current data from active collection
var newData = myDb.find({});
console.log(newData[0], newData[1]);
//Object {id: 1, name: "hbeauty", enroll: "2018-01-20", sex: "M", salary: 15}
//Object {id: 1111, name: "tom", enroll: "2017-02-28", sex: "F", salary: 35}
// only id,name were updated.

Condition is object which is exactly similar to the condition for find method. usable conditions

Uses 1
var searchCondition = { id: { $lt: 2 } };
var newData = { $set: { name: "harilarl" } };
myDb.update(searchCondition, newData);

Get number of documents updated

var updatedNumber = myDb.getDocumentNumAffected();
console.log("number of updated documents is " + updatedNumber);

7. Delete

<collection name>?, <condition>

@returns: boolean (true:success, false:error)

Uses 1

Delete from user where id is less then two.

var searchCondition = { id: { $lt: 2 } };
var documentName = "user"
var isDelete = myDb.delete(documentName, searchCondition);
if (isDelete == true) {
    console.log("Deleted.");
}

Get number of documents deleted

var deletedNumber = myDb.getDocumentNumAffected();
console.log("number of deleted documents is " + deletedNumber);

8. Usefull methods

・updateAlways
<filepath>

@returns: boolean (true:success, false:error)

This method only works for nodejs environment. It will output the contents of database on each insert,update,delete action.

myDb.updateAlways("./my.db");
・save
<filepath>

@returns: boolean (true:success, false:error)

This method only works for nodejs environment. It will output the contents of database to given file.

myDb.save("./my.db");
・getDocumentCount
<collection name>?

@returns: number of documents

It will return the number of documents existing on given collection name. If no collection name is specified then it will return the active collection's row number.

var numberRows = myDb.getDocumentCount("user");
・getDocumentNumAffected

@returns: number of documents

It will return the number of number of documents collections affected after update and delete process.

var searchCondition = { id: { $lt: 2 } };
var documentName = "user"
var isDelete = myDb.delete(documentName, searchCondition);
var numberRowsDeleted = myDb.getDocumentCount();
・getActiveCollection

@returns: name of active collection

It will return the name of active collection if exist.

var activeCollection = myDb.getActiveCollection();
・getError

@returns: error message

It will return error content.

var errorMessage = myDb.getError();
・getCollections

@returns: array of collection name

It will return all the collections as array

var arrayCollection = myDb.getCollections();

Todos

  • Write MORE use cases for find
  • Write MORE use cases for update
  • Write MORE use cases for delete
  • Translate README to JAPANESE
  • Add Encryption for nodejs
  • Add Error Description for every possible case

License

MIT