ActiveUnits / mongodb-rest

REST Server for MongoDB (using node.js)
www.degrunt.net
GNU Lesser General Public License v3.0
25 stars 11 forks source link

Name

mongodb-rest2 - REST server for MongoDB

Description

This is a REST server for MongoDB using Node, using the native node.js MongoDB driver.

Major update, now using Express

Installation

Installation is now via npm: npm install http://github.com/ActiveUnits/mongodb-rest/tarball/master.

API

Supported REST requests:

Additions:

REST responses:

Usage

config.json

{
    "dbconnection": {
        "port": 27017,
        "host": "localhost"
    },
    "port": 3000,
    "mode": "development",
    "autoStart": true
}

standalone

npm install http://github.com/ActiveUnits/mongodb-rest/tarball/master -g
mongodb-rest2

inside node.js application

var server = require("mongodb-rest2/server")
var options = {
    "db": {
        "port": 27017,
        "host": "localhost",
        "name": "test-db"
    },
    "port": 3000,
    "mode": "development",
    "autoStart": false
};
var expressApp = server.create(options).start();

hooking to mongodb-rest2 (secure mongodb-rest)

var server = require("mongodb-rest2/server")
var options = {
    "db": {
        "port": 27017,
        "host": "localhost",
        "name": "test-db"
    },
    "port": 3000,
    "mode": "development",
    "autoStart": false
};
var secureEveryRequestMiddleware = function(req, res, next) {
    if(req.param("token") != "myAuthToken") {
        res.send("Sorry", 401);
    } else
        next();
}; 
var expressApp = server.create(options, {
    "pre-router": function(expressApp) {
        expressApp.use(secureEveryRequestMiddleware);
    }
}).start();

using raw rest commands

var target = { db: "name", collection:"name, connection: {host: "localhost", port: 27017} };

var createCommand = require("mongodb-rest2/commands/create");
createCommand(target, { field1: value1 }, function(err, doc) { });

var updateCommand = require("mongodb-rest2/commands/update");
updateCommand(target, { _id: value }, { field1: value1 }, { multi: true, safe: true }, function(err, docs) { });

var listCommand = require("mongodb-rest2/commands/list");
listCommand(target, { field1: value1 }, { limit: 10, skip: 20 }, function(err, docs) { });

var deleteCommand = require("mongodb-rest2/commands/deleteCommand");
deleteCommand(target, { field: value }, { safe: true }, function(err, docs) { } ); 

Testing

Testing is now done using vows/api-easy. Just run vows ./tests/*.js in the main folder while you have the mongodb-rest2 running at port 3000

Credits