
Product
Introducing Tier 1 Reachability: Precision CVE Triage for Enterprise Teams
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
A Lightweight Cloud based JSON Database with a MongoDB like API for Node.
You will never know that you are interacting with a Github
Ever wanted to use Github as your private database, now you can.
Why would I want to use Github as my database?
Good question. Developers have many choices of different databases, GithubDB however leverages all the features you have come to love from Github.
In order to sucessfully use Github, you are going to need two things.
Create a new personal access token from Github. The only permission you need are repo.
Write it down and store it somewhere same.
Inside that file (let's say you called it database.json), you are going to create an empty array.
Install the module locally :
$ npm install github-db
/**
* We are going to authenticate with Github and
* specify our repo name and file we just created.
*/
var options = {
host: 'private-github-api.com', // <-- Private github api url. If not passed, defaults to 'api.github.com'
pathPrefix: 'prefix-for-enterprise-instance', // <-- Private github api url prefix. If not passed, defaults to null.
protocol: 'https', // <-- http protocol 'https' or 'http'. If not passed, defaults to 'https'
user: 'github-username', // <-- Your Github username
repo: 'github-repo', // <-- Your repository to be used a db
remoteFilename: 'filename-with-extension-json' // <- File with extension .json
};
// Require GithubDB
var GithubDB = require('..').default;
// Initialize it with the options from above.
var githubDB = new GithubDB(options);
// Authenticate Github DB -> grab a token from here https://github.com/settings/tokens
githubDB.auth(personalAccessToken);
// Connect to repository
githubDB.connectToRepo();
// You are now authenticated with Github and you are ready to use it as your database.
githubDB.save({"message": "wooohoo"});
githubDB.auth(personalAccessToken)
In order to use Github DB, you will require a personal access token. You can request one from (Github)[https://github.com/settings/tokens]. It is recommended that you set your token as an enviroment variable. Never commit your token!
var personalAccessToken = process.env.TOKEN; // Set the variable here
Start the server with the token
$ TOKEN=xxxx node app.js
Once you are authenticated to you connect to your new Github Database.
githubDB.connectToRepo();
Note : Please make sure the file on Github you are using as your database contains a valid JSON array, otherwise githubDB will return an empty array.
[]
Else it will throw an error like
undefined:0
^
SyntaxError: Unexpected end of input
With githubDb you can easily save an object. Since you are making a call to a network. This method is asynchronous.
githubDB.save(users).then((res) => {
// The result from the same
console.log(res);
});
You can also save multiple objects at once like
var article1 = {
title : 'githubDB rocks',
published : 'today',
rating : '5 stars'
}
var article2 = {
title : 'githubDB rocks',
published : 'yesterday',
rating : '5 stars'
}
var article3 = {
title : 'githubDB rocks',
published : 'today',
rating : '4 stars'
}
githubDB.save([article1, article2, article3]).then((res) => {
// The result from the same
console.log(res);
});
And this will return the inserted objects
[ { title: 'githubDB rocks',
published: 'today',
rating: '4 stars',
_id: 'b1cdbb3525b84e8c822fc78896d0ca7b' },
{ title: 'githubDB rocks',
published: 'yesterday',
rating: '5 stars',
_id: '42997c62e1714e9f9d88bf3b87901f3b' },
{ title: 'githubDB rocks',
published: 'today',
rating: '5 stars',
_id: '4ca1c1597ddc4020bc41b4418e7a568e' } ]
There are 3 methods available for reading the JSON collection
githubDB.find().then((results) => {
// Results here
console.log(results);
});
This will return all the records
[{
title: 'githubDB rocks',
published: 'today',
rating: '5 stars',
_id: '0f6047c6c69149f0be0c8f5943be91be'
}]
You can also query with a criteria like
githubDB.find({rating : "5 stars"}).then((results)=> {
console.log(results);
});
This will return all the articles which have a rating of 5.
Find can take multiple criteria
githubDB.find({rating : "5 stars", published: "yesterday"}).then((results) => {
console.log(results);
});
This will return all the articles with a rating of 5, published yesterday.
This method returns exact match of records from the collection.
githubDB.findExact({
title: 'githubDB rocks',
rating: '4 stars'
}).then((results)=> {
console.log(results);
});
This will return all the records
[{
title: 'githubDB rocks',
published: 'today',
rating: '4 stars',
_id: 'b1cdbb3525b84e8c822fc78896d0ca7b'
}]
githubDB.findOne().then((results)=> {
console.log(results);
});
If you do not pass a query, githubDB will return the first article in the collection. If you pass a query, it will return first article in the filtered data.
githubDB.findOne({_id: '0f6047c6c69149f0be0c8f5943be91be'}).then((results)=> {
console.log(results);
});
githubDB.update(query, data, options).then((updated)=> {
console.log(updated); // { updated: 1, inserted: 0 }
});;
You can also update one or many objects in the collection
options = {
multi: false, // update multiple - default false
upsert: false // if object is not found, add it (update-insert) - default false
}
Usage
var query = {
title : 'githubDB rocks'
};
var dataToBeUpdate = {
title : 'githubDB rocks again!',
};
var options = {
multi: false,
upsert: false
};
var updated = githubDB.update(query, dataToBeUpdate, options).then((results) => {
console.log(updated); // { updated: 1, inserted: 0 }
});
githubDB.removeAll();
githubDB.remove(query, multi);
You can remove the entire collection (including the file) or you can remove the matched objects by passing in a query. When you pass a query, you can either delete all the matched objects or only the first one by passing multi
as false
. The default value of multi
is true
.
githubDB.remove({rating : "5 stars"});
githubDB.remove({rating : "5 stars"}, true); // remove all matched. Default - multi = true
githubDB.remove({rating : "5 stars"}, false); // remove only the first match
To delete the file simple use removeAll();
githubDB.removeAll();
See the CONTRIBUTING Guidelines
1.1.3
1.1.2
1.1.1
1.1.0
1.0.0
Copyright (c) 2017 UsMakesTwo. Licensed under the MIT license.
FAQs
A Lightweight Cloud based JSON Database with a MongoDB like API for Node.
We found that github-db demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
Research
/Security News
Ongoing npm supply chain attack spreads to DuckDB: multiple packages compromised with the same wallet-drainer malware.
Security News
The MCP Steering Committee has launched the official MCP Registry in preview, a central hub for discovering and publishing MCP servers.