rethinkdb-populate

Populate RethinkDB database with initial data

Usage no npm install needed!

<script type="module">
  import rethinkdbPopulate from 'https://cdn.skypack.dev/rethinkdb-populate';
</script>

README

RethinkDB Populate

Requires node 7 with --harmony flag

const r = require('rethinkdb')
const populate = require('rethinkdb-populate')

async function init() {

  const db = await r.connect({port: 28015})

  await populate(db, {
    users: {indices: ['email'], data: [
      {id: 'demo', name: 'Example User', email: 'demo@example.org'},
    ]},
    devices: {indices: {
      owners: {multi: true},
    }},
    positions: {indices: {
      location: {geo: true},
      deviceTimestamp: {fields: ['device', 'timestamp']},
    }},
  })

  // app.listen or whatever

}

init().catch(console.error)

API

Following formats are allowed:

populate(db, [ // list of tables to create
  {
    name: 'users',
    indices: ['email'], // list of indices to create
    data: [ // list of initial documents to insert (id required)
      {id: 'demo', name: 'Example User', email: 'demo@example.org'},
    ],
  },
  {
    name: 'devices',
    indices: [
      {name: 'owners', multi: true},
    ],
  },
  {
    name: 'positions',
    indices: [
      {name: 'location', geo: true},
      {name: 'deviceTimestamp', fields: ['device', 'timestamp']
    },
  },
])
populate(db, { // list of tables to create
  users: {
    indices: ['email'], // list of indices to create
    data: [ // list of initial documents to insert
      {id: 'demo', name: 'Example User', email: 'demo@example.org'},
    ],
  },
  devices: {
    indices: {
      owners: {multi: true},
    },
  },
  positions: {
    indices: {
      location: {geo: true},
      deviceTimestamp: {fields: ['device', 'timestamp']},
    },
  },
})