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

@chatopera/ms-tungus

v0.1.6

Published

Mongoose driver for TingoDB embedded database

Downloads

5

Readme

Tungus

Build Status

Note! Currently driver support operation only with Mongoose 3.x. Mongoose 4.x uses API of MongoDb driver 2.x while TingoDB currently is compatible with 1.x API only. Please let us know if support of 4.x version is essential.

This module implements mongoose.js driver API and allows to use mongoose with TingoDB.

TingoDB is embedded Node.js database that is compatible with MongoDB on API level.

So far this module is on its early stage with only basic functionality.

To use this module you have to install both tungus and mongoose.

npm install tungus
npm install mongoose

Then in your code you should include once tungus module prior to include of mongoose. This rewrites global.MONGOOSE_DRIVER_PATH variable to point it to tungus.

require('tungus')
require('mongoose')

Next to that you can keep using mongoose as usual except now it will accept different connection string:

mongoose.connect('tingodb:///some/local/folder')

Optionally you can set tingodb options using TUNGUS_DB_OPTIONS global variable. For example this way it is possible to switch to BSON.ObjectID ids which is default for mongodb.

global.TUNGUS_DB_OPTIONS =  { nativeObjectID: true, searchInArray: true };

Full example:

var tungus = require('tungus');
var mongoose = require('mongoose')
var Schema = mongoose.Schema;

console.log('Running mongoose version %s', mongoose.version);

/**
 * Console schema
 */

var consoleSchema = Schema({
	name: String
  , manufacturer: String
  , released: Date
})
var Console = mongoose.model('Console', consoleSchema);

/**
 * Game schema
 */

var gameSchema = Schema({
	name: String
  , developer: String
  , released: Date
  , consoles: [{ type: Schema.Types.ObjectId, ref: 'Console' }]
})
var Game = mongoose.model('Game', gameSchema);

/**
 * Connect to the local tingo db file
 */

mongoose.connect('tingodb://'+__dirname+'/data', function (err) {
  // if we failed to connect, abort
  if (err) throw err;

  // we connected ok
  createData();
})

/**
 * Data generation
 */

function createData () {
  Console.create({
	  name: 'Nintendo 64'
	, manufacturer: 'Nintendo'
	, released: 'September 29, 1996'
  }, function (err, nintendo64) {
	if (err) return done(err);

	Game.create({
		name: 'Legend of Zelda: Ocarina of Time'
	  , developer: 'Nintendo'
	  , released: new Date('November 21, 1998')
	  , consoles: [nintendo64]
	}, function (err) {
	  if (err) return done(err);
	  example();
	})
  })
}

/**
 * Population
 */

function example () {
  Game
  .findOne({ name: /^Legend of Zelda/ })
  .populate('consoles')
  .exec(function (err, ocinara) {
	if (err) return done(err);
	console.log(ocinara);

	console.log(
		'"%s" was released for the %s on %s'
	  , ocinara.name
	  , ocinara.consoles[0].name
	  , ocinara.released.toLocaleDateString());

	done();
  })
}

function done (err) {
  if (err) console.error(err);
  Console.remove(function () {
	Game.remove(function () {
	  mongoose.disconnect();
	})
  })
}