0.3.1 • Published 8 years ago

snowflea v0.3.1

Weekly downloads
10
License
MIT
Repository
github
Last release
8 years ago

snowflea

HEAVY ALPHA - PRE-ALPHA EVEN

CRUD operations based on Iceworm schemata.

Quickstart

'use strict'

const snowflea = require('snowflea')
const Schema = require('iceworm').Schema

// settings
snowflea.set('mongo.uri', 'mongodb://localhost:27017/test')

// schema
let cat_schema = new Schema(
  {
    name: '*string',
    age: 'int>0',
    secret: '-string'
  }
)

// use the schema
snowflea.use(cat_schema, 'cats')


// insert a cat
cat_schema.create({ name: 'Tom', age: 3, secret: 'hates fish' })
  .then((result) => {
    console.log('created a cat:', result[0])
  })
  .catch((err) => {
    console.error(err.message)
  })

Schema Creation

Snowflea extends Iceworm's Schema with mongo CRUD operations. To use an Iceworm schema with Snowflea, use the use function. It takes a schema and the name of the mongo collection the schema belongs to:

let schema = new iceworm.Schema({'name': '*string'})
snowflea.use(schema, 'companions')`

Crud Operations

Snowflea knows four methods to do CRUD (I hope you are sitting):

  • create()
  • read()
  • update()
  • delete()

They

  • are implemented as extensions to Iceworm's Schema class
  • return a Promise.

Create

The create() method can be used to insert one or many items:

  • one: create(<obj_to_insert>)
  • many: create(<[obj1, obj2, ... objn]>)

The method returns a Promise which returns an array of created objects (if successful) or an error object.

my_schema.create(cat)
    .then((docs) => {
        console.log(docs)
    })
    .catch((err) => {
        console.log(err)
    })

Passed objects are evaluated against the schema provided:

  • if validation fails, the create operation fails and returns an error (see section on Errors)
  • projection will ruthlessly remove any fields of the passed objects that are not part of the schema before saving them

Read

The read() method returns object(s) matching a mongo query document. Any projection defined in your schema will be used (i.e. hidden fields will not be delivered).

let query = { "name":"Amy" }
my_schema.read({query})
    .then((result) => {
        console.log(result)
    })
    .catch((err) => {
        console.error(err)
    })

Update

The update() method can be used to update one or many items:

my_schema.update(<filter>, <data>[, <options>])
    .then((result) => {
        console.log(result)
    })
    .then((err) => {
        console.error(err)
    })

The optional options object lets you specify:

  • upsert (boolean) - if you want to allow upserts (default: false)
  • many (boolean) - if only one or many matching documents should be affected (default: false)

The update() method returns a promise which

  • resolves to an object containing an array of affected documents (documents)
  • or rejects with an Error

Delete

The delete() method removes object(s) matching a mongo query document.

let query = { "name":"Amy" }
my_schema.remove({query})
    .then((result) => {
        console.log(result)
    })
    .catch((err) => {
        console.error(err)
    })

Errors

Create and update operations use the schema to validate objects passed. Any validation errors will cause the Promise to decline and return an object containing the errors.

0.3.1

8 years ago

0.3.0

8 years ago

0.2.0

8 years ago

0.1.3

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago