node package manager
We need your input. Help make JavaScript better: Take the 2017 JavaScript Ecosystem survey »

final-arango

Final-Arango

This is a decorator for Final that provides easy-to-use Arango database functions.

☢️ This is under development and the API will change.

Setup

config.js

import arango from './index'
 
const database = arango({
  database: 'test', // set database name. test is default
  url: 'http://root:@localhost:5829/' // database url/credentials
})
 
export { database }

MyComponent.js

import { database } from './config'
 
@database({
  collection: 'User' // collection name
  // OR
  edge: 'Likes'
})
class UserComponent extends Component {
  // do your Final stuff here
}

Usage

Properties

You can now use the following class properties on your components:

schema

A schema is an object generated by flow-runtime. Below is an example. This will change when flow-runtime is update to babel@7. There are some useful types exported by final-server (StringLengthType, CollectionType, EmailType).

const UserSchema = t.type(
  'User', t.object(
    t.property('name', t.string()),
    // ... other properties
  )
)
 
class UserComponent extends Component {
  schema = UserSchema
  // ...
}

uniques

This is simply an array of what schema properties should be unique.

uniques = ['email']

methods

The decorator adds these methods. You should also check the tests file for any I've forgotten to mention.

find

Accepts and arangolize object. Returns array.

findOne

Same as above, but adds limit: 1 automatically. Returns object.

findAndCount

Same as above but returns object as below:

{
  data: [Array of retults],
  meta: { count: <Integer of all results> }
}

The default limit is 25, but the count will show how many results are in the DB, not just the number returned. Useful for pagination.

save

save({ name: 'joe '})
// OR, for edge documents
save(user, post, { thisIsOptional: 'hello' })

Returns the document that was made, except for edge documents which just return and object with _key and _rev.

remove

Accepts either a document object or an id string.

Other stuff

A _createdAt key is automaticlly added on all documents, so no need to add your own.