Oriento
Former official node.js driver for OrientDB. Fast, lightweight, uses the binary protocol. Now deprecated.
Install / Use
/learn @codemix/OrientoREADME
NOTE: Oriento is deprecated, development continues at https://github.com/orientechnologies/orientjs
Oriento
Official orientdb driver for node.js. Fast, lightweight, uses the binary protocol.
Supported Versions
Oriento aims to work with version 1.7.1 of orientdb and later. While it may work with earlier versions, they are not currently supported, pull requests are welcome!
IMPORTANT: Oriento does not currently support OrientDB's Tree Based RIDBag feature because it relies on making additional network requests. This means that by default, the result of e.g.
JSON.stringify(record)for a record with up to 119 edges will be very different from a record with 120+ edges. This can lead to very nasty surprises which may not manifest themselves during development but could appear at any time in production. There is an open issue for this in OrientDB, until that gets fixed, it is strongly recommended that you setRID_BAG_EMBEDDED_TO_SBTREEBONSAI_THRESHOLDto a very large value, e.g. 2147483647. Please see the relevant section in the OrientDB manual for more information.
Installation
Install via npm.
npm install oriento
Running Tests
To run the test suite, first invoke the following command within the repo, installing the development dependencies:
npm install
Then run the tests:
npm test
Features
- Tested with latest orientdb (1.7).
- Intuitive API, based on bluebird promises.
- Fast binary protocol parser.
- Access multiple databases via the same socket.
- Migration support.
- Simple CLI.
- Connection Pooling
Usage
Configuring the client.
var Oriento = require('oriento');
var server = Oriento({
host: 'localhost',
port: 2424,
username: 'root',
password: 'yourpassword'
});
Listing the databases on the server
server.list()
.then(function (dbs) {
console.log('There are ' + dbs.length + ' databases on the server.');
});
Creating a new database
server.create({
name: 'mydb',
type: 'graph',
storage: 'plocal'
})
.then(function (db) {
console.log('Created a database called ' + db.name);
});
Using an existing database
var db = server.use('mydb');
console.log('Using database: ' + db.name);
Using an existing database with credentials
var db = server.use({
name: 'mydb',
username: 'admin',
password: 'admin'
});
console.log('Using database: ' + db.name);
Execute an Insert Query
db.query('insert into OUser (name, password, status) values (:name, :password, :status)',
{
params: {
name: 'Radu',
password: 'mypassword',
status: 'active'
}
}
).then(function (response){
console.log(response); //an Array of records inserted
});
Execute a Select Query with Params
db.query('select from OUser where name=:name', {
params: {
name: 'Radu'
},
limit: 1
}).then(function (results){
console.log(results);
});
Raw Execution of a Query String with Params
db.exec('select from OUser where name=:name', {
params: {
name: 'Radu'
}
}).then(function (response){
console.log(response.results);
});
Query Builder: Insert Record
db.insert().into('OUser').set({name: 'demo', password: 'demo', status: 'ACTIVE'}).one()
.then(function (user) {
console.log('created', user);
});
Query Builder: Update Record
db.update('OUser').set({password: 'changed'}).where({name: 'demo'}).scalar()
.then(function (total) {
console.log('updated', total, 'users');
});
Query Builder: Delete Record
db.delete().from('OUser').where({name: 'demo'}).limit(1).scalar()
.then(function (total) {
console.log('deleted', total, 'users');
});
Query Builder: Select Records
db.select().from('OUser').where({status: 'ACTIVE'}).all()
.then(function (users) {
console.log('active users', users);
});
Query Builder: Text Search
db.select().from('OUser').containsText({name: 'er'}).all()
.then(function (users) {
console.log('found users', users);
});
Query Builder: Select Records with Fetch Plan
db.select().from('OUser').where({status: 'ACTIVE'}).fetch({role: 5}).all()
.then(function (users) {
console.log('active users', users);
});
Query Builder: Select an expression
db.select('count(*)').from('OUser').where({status: 'ACTIVE'}).scalar()
.then(function (total) {
console.log('total active users', total);
});
Query Builder: Traverse Records
db.traverse().from('OUser').where({name: 'guest'}).all()
.then(function (records) {
console.log('found records', records);
});
Query Builder: Return a specific column
db
.select('name')
.from('OUser')
.where({status: 'ACTIVE'})
.column('name')
.all()
.then(function (names) {
console.log('active user names', names.join(', '));
});
Query Builder: Transform a field
db
.select('name')
.from('OUser')
.where({status: 'ACTIVE'})
.transform({
status: function (status) {
return status.toLowerCase();
}
})
.limit(1)
.one()
.then(function (user) {
console.log('user status: ', user.status); // 'active'
});
Query Builder: Transform a record
db
.select('name')
.from('OUser')
.where({status: 'ACTIVE'})
.transform(function (record) {
return new User(record);
})
.limit(1)
.one()
.then(function (user) {
console.log('user is an instance of User?', (user instanceof User)); // true
});
Query Builder: Specify default values
db
.select('name')
.from('OUser')
.where({status: 'ACTIVE'})
.defaults({
something: 123
})
.limit(1)
.one()
.then(function (user) {
console.log(user.name, user.something);
});
Query Builder: Put a map entry into a map
db
.update('#1:1')
.put('mapProperty', {
key: 'value',
foo: 'bar'
})
.scalar()
.then(function (total) {
console.log('updated', total, 'records');
});
Loading a record by RID.
db.record.get('#1:1')
.then(function (record) {
console.log('Loaded record:', record);
});
Deleting a record
db.record.delete('#1:1')
.then(function () {
console.log('Record deleted');
});
Listing all the classes in the database
db.class.list()
.then(function (classes) {
console.log('There are ' + classes.length + ' classes in the db:', classes);
});
Creating a new class
db.class.create('MyClass')
.then(function (MyClass) {
console.log('Created class: ' + MyClass.name);
});
Creating a new class that extends another
db.class.create('MyOtherClass', 'MyClass')
.then(function (MyOtherClass) {
console.log('Created class: ' + MyOtherClass.name);
});
Getting an existing class
db.class.get('MyClass')
.then(function (MyClass) {
console.log('Got class: ' + MyClass.name);
});
Updating an existing class
db.class.update({
name: 'MyClass',
superClass: 'V'
})
.then(function (MyClass) {
console.log('Updated class: ' + MyClass.name + ' that extends ' + MyClass.superClass);
});
Listing properties in a class
MyClass.property.list()
.then(function (properties) {
console.log('The class has the following properties:', properties);
});
Adding a property to a class
MyClass.property.create({
name: 'name',
type: 'String'
})
.then(function () {
console.log('Property created.')
});
Deleting a property from a class
MyClass.property.drop('myprop')
.then(function () {
console.log('Property deleted.');
});
Renaming a property on a class
MyClass.property.rename('myprop', 'mypropchanged');
.then(function () {
console.log('Property renamed.');
});
Creating a record for a class
MyClass.create({
name: 'John McFakerton',
email: 'fake@example.com'
})
.then(function (record) {
console.log('Created record: ', record);
});
Listing records in a class
MyClass.list()
.then(function (records) {
console.log('Found ' + records.length + ' records:', records);
});
Create a new index for a class property
db.index.create({
name: 'MyClass.myProp',
type: 'unique'
})
.then(function(index){
console.log('Created index: ', index);
});
Get entry from class property index
db.index.get('MyClass.myProp')
.then(function (index) {
index.get('foo').then(console.log.bind(console));
});
Creating a new, empty vertex
db.create('VERTEX', 'V').one()
.then(function (vertex) {
console.log('created vertex', vertex);
});
Creating a new vertex with some properties
db.create('VERTEX', 'V')
.set({
key: 'value',
foo: 'bar'
})
.one()
.then(function (vertex) {
console.log('created vertex', vertex);
});
Deleting a vertex
db.delete('VERTEX')
.where('@rid = #12:12')
.one()
.then(function (count) {
console.log('deleted ' + count + ' vertices');
});
Creating a simple edge between vertices
db.create('EDGE', 'E')
.from('#12:12')
.to('#12:13')
.one()
.then(function (edge) {
console.log('created edge:', edge);
});
Creating an edge with properties
db.create('EDGE', 'E')
.from('#12:12')
.to('#12:13')
.set({
key: 'value',
foo: 'bar'
})
.one()
.then(function (edge) {
console.log('created edge:', edge);
});
Deleting an edge between vertices
db.delete('EDGE', 'E')
.from('#12:12')
.to('#12:13')
.scalar()
.then(function (count) {
console.log('de
Related Skills
node-connect
342.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
85.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
342.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
342.5kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。

