final-arango
v0.9.10
Published
Arango-enabling decorator for Final server framework
Downloads
8
Readme
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.