NeDB Store for in-flight MQTT.js packets. Thanks to nedb.
'use strict';
var mqtt = require('mqtt'),
  NeDBStore = require('mqtt-nedb-store'),
  manager = NeDBStore('path/to/db');
var client = mqtt.connect({
  port: 8883,
  incomingStore: manager.incoming,
  outgoingStore: manager.outgoing
});
//// or
// var client = mqtt.connect('mqtt://test.mosca.io', {
//  port: 8883,
//  incomingStore: manager.incoming,
//  outgoingStore: manager.outgoing
//});
client.on('connect', function() {
  console.log('connected');
  client.publish('hello', 'world', {qos: 1}, function() {
    console.log('published');
    client.end();
  });
});NeDB datastores are compacted by default only when opened. NeDB's automatic periodic compaction can be activated with NeDB constructor options:
  manager = NeDBStore('path/to/db', { outgoing: { autocompactionInterval: 60 } });
MIT