New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

dbo

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dbo

Make your data persistent. Database abstraction (ORM/CRUD) / Data Mapper.

  • 0.8.8
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
decreased by-50%
Maintainers
1
Weekly downloads
 
Created
Source

DBO: Persistent data abstraction module

Your DBA guy will be happy you'll be using a SQL relational database, and your JS hackers will be happy about using no-SQL. And you will be happy about getting the advantage of both!

This module for nodejs/iojs makes it easier to manage data and make data persistent between app restarts.

Database selects, updates and inserts will be done automatically!

An object oriented approach is not required but recommended. Constructor functions can be passed and objects will be constructed automatically. Getters and setters work like normal, with the added benefits of the data being persistent and stored in a database, and on a hard drive, but accessed from memory. Data is updated immediately and sent to the database asynchronously in the background.

Note that, in order for this module to work, you must have access to a mySQL database and you have to create the database schema! This module will not ALTER TABLE or CREATE TABLE.

It (currently) only works with mySQL databases.

Here's a JavaScript example of how you might use this module:

var Player = function() {
}
Player.prototype.takeDamage = function(damage) {
	this.data.health -= damage;
};

var Weapon = function() {
}
Weapon.prototype.fireAt(otherPlayer) {
	otherPlayer.takeDamage(this.damage);
}

var DBO = require("dbo");

DBO.connect({host: "127.0.0.1",	user: "nodedeamon", password : "12345", database: "ultrashooter"});


// Load data
var players = new DBO.List({table: "players", fun: Player, key: "name"});
var weapons = new DBO.List({table: "weapons", fun: Weapon, key: "id"});

// Link weapons to the players
players.link({list: weapons, key: "player_name"});

// Update something
players["Arnold"].data.age = 65;

// Insert another player
players.add({name: "Napoleon", age: 45});

// What weapons does Arnold have?
var player = players["Arnold"],
	weapon;
for(var id in player.weapons) {
	weapon = player.weapons[id];
	console.log(weapon.data.name + " with " + weapon.data.damage + " damage");
}

// Fire that weapon
weapon.fireAt(players["Napoleon"]);

You only have to remember one function (DBO.List) to make your data persistent.

The "data" will always be under .data, stored as an associative array with key, value pairs. We choose to have all "data" under a data attribute to make sure other attributes or functions are not overwritten.

Make sure you use unique identifiers (primary keys) like name, or id (with auto-increment) when you design the database schema!

See the Documentation for more info.

Keywords

FAQs

Package last updated on 03 May 2016

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc