Binary Types
This is a legacy Apache Ignite documentation
The new documentation is hosted here: https://ignite.apache.org/docs/latest/
Node.JS client supports all operations and types from the Binary Client Protocol except the following not-applicable features:
OP_REGISTER_BINARY_TYPE_NAME
andOP_GET_BINARY_TYPE_NAME
operations are not supported.- Filter object for
OP_QUERY_SCAN
operation is not supported.OP_QUERY_SCAN
operation itself is supported. - It is not possible to register a new Ignite Enum type. Reading and writing items of the existing Ignite Enum types are supported.
The following example shows how to put/get Complex Objects and Binary Objects:
const IgniteClient = require('apache-ignite-client');
const IgniteClientConfiguration = IgniteClient.IgniteClientConfiguration;
const ObjectType = IgniteClient.ObjectType;
const CacheEntry = IgniteClient.CacheEntry;
const ComplexObjectType = IgniteClient.ComplexObjectType;
class Person {
constructor(id = null, name = null, salary = null) {
this.id = id;
this.name = name;
this.salary = salary;
}
}
async function putGetComplexAndBinaryObjects() {
const igniteClient = new IgniteClient();
try {
await igniteClient.connect(new IgniteClientConfiguration('127.0.0.1:10800'));
const cache = await igniteClient.getOrCreateCache('myPersonCache');
// Complex Object type for JavaScript Person class instances
const personComplexObjectType = new ComplexObjectType(new Person(0, '', 0)).
setFieldType('id', ObjectType.PRIMITIVE_TYPE.INTEGER);
// set cache key and value types
cache.setKeyType(ObjectType.PRIMITIVE_TYPE.INTEGER).
setValueType(personComplexObjectType);
// put Complex Objects to the cache
await cache.put(1, new Person(1, 'John Doe', 1000));
await cache.put(2, new Person(2, 'Jane Roe', 2000));
// get Complex Object, returned value is an instance of Person class
const person = await cache.get(1);
console.log(person);
// new CacheClient instance of the same cache to operate with BinaryObjects
const binaryCache = igniteClient.getCache('myPersonCache').
setKeyType(ObjectType.PRIMITIVE_TYPE.INTEGER);
// get Complex Object from the cache in a binary form, returned value is an instance of BinaryObject class
let binaryPerson = await binaryCache.get(2);
console.log('Binary form of Person:');
for (let fieldName of binaryPerson.getFieldNames()) {
let fieldValue = await binaryPerson.getField(fieldName);
console.log(fieldName + ' : ' + fieldValue);
}
// modify Binary Object and put it to the cache
binaryPerson.setField('id', 3, ObjectType.PRIMITIVE_TYPE.INTEGER).
setField('name', 'Mary Major');
await binaryCache.put(3, binaryPerson);
// get Binary Object from the cache and convert it to JavaScript Object
binaryPerson = await binaryCache.get(3);
console.log(await binaryPerson.toObject(personComplexObjectType));
await igniteClient.destroyCache('myPersonCache');
}
catch (err) {
console.log(err.message);
}
finally {
igniteClient.disconnect();
}
}
putGetComplexAndBinaryObjects();
Node.JS example files
Node.JS thin client contains fully workable examples to demonstrate the behavior of the client.
Updated 2 months ago