orientdb-rest-api

1.1.2 • Public • Published

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 query
db.command(query, [paramenters, limit, fetchplan]) returns object|boolean containing the result of the command
db.insert(className, data) returns boolean shortcut as db.post('document', null, data) and set '@class' property of data
db.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 datetime
db.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

Readme

Keywords

Package Sidebar

Install

npm i orientdb-rest-api

Weekly Downloads

1

Version

1.1.2

License

MIT

Last publish

Collaborators

  • gusnips