orientdb-rest-api
v1.1.2
Published
A node.js driver for OrientDB using the OrientDB RESTful HTTP protocol
Downloads
2
Readme
orientdb-rest-api
A Node.js driver to talk to the OrientDB REST API for node and the browser Also works with electron and react-native
Very basic http wrapper using superagent based on node-orient-http and tested on OrientDb 2.2.31
Install
npm install orientdb-rest-api
Basic Usage
const OrientDB=require('orientdb-rest-api');
const db = new OrientDB({
user: 'root',
password: 'root_passwd',
host: 'http://localhost:2480',
database: 'GratefulDeadConcerts',
})
db.connect().then(async ()=>{
const result=await db.query('select * from V where name = ?',["Batman"])
console.log(result)
}).catch(err=>{
console.error(err.message)
})
Query and Command query
Syntax:
db.query(query, parameters, limit, fetchplan)
db.command(query, parameters, limit, fetchplan)
Examples:
db.command('insert into V set name = ?', ["Batman"]).then(async ()=>{
// named parameters, no limit
const res=await db.query('select * from V where name = :name', {
name: "Batman"
})
db.command('select * from V where name = ?', ["Batman"], 1).then(successHandler)
}).catch((err)=>console.error(err))
Response will be something like:
{
"result": [
{
"@type": "d",
"@rid": "#9:12",
"@version": 1,
"@class": "V",
"name": "Batman"
}
]
}
Methods
All methods return a Promise
See superagent for more information about the response and errors
Connection
db.connect()
returns boolean
db.disconnect()
returns boolean
Rest commands:
db.get(command, queryParams)
returns object
db.delete(command, queryParams)
returns boolean
db.head(command, queryParams)
returns boolean
db.post(command, queryParams, postBody)
returns object
db.put(command, queryParams, postBody)
returns object
db.patch(command, queryParams, postBody)
returns object
Custom commands
db.query(query, [paramenters, limit, fetchplan])
returns object
containing the result of the querydb.command(query, [paramenters, limit, fetchplan])
returns object
|boolean
containing the result of the commanddb.insert(className, data)
returns boolean
shortcut as db.post('document', null, data)
and set '@class' property of datadb.queryOne(query, paramenters, fetchplan)
returns Object
|null
shortcut for setting limit 1 and return either first result or null
Helpers
db.getDateTimeFormatted([fromDate])
return string
returns a datetime formatted date. fromDate is optional, if not set, it will use current datetimedb.getDateFormatted([fromDate])
same as above
Examples:
// create
db.post('document', null, { '@class': 'V', name: 'Gustavo Salome'}).then().catch()
// deleting, should return true
db.delete('document', '9:1').then().catch()
// create as command, should return the new record
db.command('insert into V set name = "Batman"').then().catch()
db.query('select * from V where name = "Batman"').then((res)=>{
console.log(res)
}, 1 /*1 is the limit*/).catch(err=>{
console.log(err.message)
})
Language
db.language('gremlin').query("g.V('@class', 'User')").then(successHandler2).catch(errorHandler2)
See OrientDB-REST API for a full list of rest commands
Events
const db = new OrientDB({
user: 'root',
password: 'root_passwd',
host: 'http://localhost:2480',
database: 'GratefulDeadConcerts',
})
db.connect()
db.disconnect()
// once connected
db.once('connected', (response)=>{
console.log('yes! connected')
})
// on any error
db.on('error',(message, err)=>{
console.log(message, err)
})
db.once('disconnected', (response)=>{
console.log('bye!')
})
Example
const OrientDB=require ('orientdb-rest-api')
const db=new OrientDB({
user: 'root',
password: 'password',
host: 'http://localhost:2480',
database: 'GratefulDeadConcerts',
})
const config=require('./config/local')
const db=new OrientDB(config)
db.connect().then(async (res)=>{
console.log(res) // true
res=await db.command('insert into V set name = ?', ["Batman"])
console.log(res) // Object containing the new record
res=await db.query('select * from V where name = :name', {
name: "Batman"
})
console.log(res) // Object containing the fetched record
res=await db.command('select * from V where name = ?', ["Batman"], 1)
console.log(res) // Same object containing the fetched record
res=await db.delete('document', res.result[0]['@rid'])
console.log(res) // true
res=await db.disconnect()
})
db.on('connected',(res)=>{
console.log('connected')
})
db.on('error',(message, err)=>{
console.log(message)
process.exit()
})
db.on('disconnected',(res)=>{
console.log('disconnected')
})
Api
See OrientDB-REST API for more docs.
Erros
Listening for error events
db.on('error',(message, err)=>{
console.log(message, err)
})
db.query('error query').catch((err)=>{
console.log(err.message)
})
See SuperAgent Error Handling for more information
Config
{
user: 'root',
password: 'root_passwd',
host: 'http://127.0.0.1:2480',
database: 'GratefulDeadConcerts',
language: 'sql',
timeout: 1000*5,
}
Changelog
1.1.0
- Changed from axios to superagent
1.0.0
- First Release