isc-cache-nodeisc-cache-node
Watch
0
Star
0
Category
Frameworks
Works with
Tags
Version
2017.1
Last updated
2018-06-01
Repository
License
Download
Discuss
Details
Version history
Issues
CNDO (Caché Node Data Object) - easiest access to database using object data model.

JavaScript ODM for InterSystems Caché

JavaScript Object Data Model - easiest workflow with InterSystems Caché objects from client JavaScript or NodeJS.

Note

This project is a result of InterSystems Innovations School hackathon which had its place 2015, by the team of Anton Gnibeda, Irene Mychailova and Nikita Savchenko. The code in this repository is provided "as-is" and is not ready for potential production use. For any further info, questions or requests please, submit an issue.

Usage

  1. Include the scripts to your application (see src/index.html example file);
  2. Import and compile DemoInstaller.xml to Caché (or import from sources, src directory);
  3. A new web application named "CJS" will be created during compilation;
  4. Now, serve the src/client directory and check the demo. Demo defaults to localhost and port number 57772, see test.js.

Features

// .connect("Server address and port", "Namespace", [Any Packages/classes], callback())
// Note: all the callbacks represented here are asynchronous and may be triggered in any order.
cjs.connector.connect("http://localhost:57772", "USER", ["School2015"], function (cache) {

  // creating a new object
  var p = new cache.School2015.Participant();
  p.Name = "Anton";
  p.Surname = "Gnibeda";
  p.$save(function(obj) {
    console.log("Participant with name " + obj.name + " saved!");
  });
	
  // opening existing object
  cache.School2015.Group.openById(1, function (group) {
    console.log("Points: " + group.Points);
  });
	
  // executing class method
  cache.School2015.Group.AddPoints(1, 1);

  // executing instance method
  cache.School2015.Group.openById(1, function (group) {
    group.PrintInfo(function (res) {
      console.log(res);
    });
  });
	
	// executing linq-like queries
  cache.School2015.Participant
    .query()
    .where("Carma < 100 OR Carma > 140")
    .where("$id > 10")
    .orderByDesc("Carma")
    .orderBy("Name")
    .exec(function(res) {
      console.table(res);
    });

});