I've not yet experimented with mirroring. Its our busiest time of the year here, but that doesn't stop you thinking about the future.

We are a small company running 24/7 and external out of hours support is expensive (2am on sunday morning is !!) so we stuck with win10 because it's what we know, what we can fix quickly. Not the best OS, but we do know where we are with it.

It's where we have to go and play, but just wondered.


does cache have to be the unicode version or can we use nodeJS with "standard cache" (I'm using nodejS 4.2.1 in a windows environment with 2016.1 cache)

the reason I ask, I have installed the nodeJS (64bit) and it's fully working with the unicode version of cache (I read that I should be using unicode somewhere) but when I try to copy the same setup into 32bit windows environment (NON unicode) making sure I have the 32bit nodeJS, it won't connect,

Been through loads of things, but its only unicode/non-unicode that seems to be different

Daimor on github gave a very useful set of classes (I believe v2015 onwards) that allowed you to log anything and everything to a class


you can pass in event types such as NONE,FATAL,ERROR,WARN, INFO,STAT,DEBUG,RAW and then it will handle just about anything,  objects, strings, lists etc and then just do sql's for the actual messages

Timur:  I originally took my code from Introducing new JSON capabilities in Cache 2016.1 article  on this website and having not played with the new json capabilities, started with this method.

the answers  comments clearly show there are many ways to write the same thing.

Stefan: I prefer legibility over brevity. and your solution does indeed help me visualise the end output. So my preferences is to adopt this version.

thanks for the answers.
Any other comments ?

I have not seen the        dot Value dot value             syntax used, but I do like the simplicity

I've also been playing all morning, and I've just got this to work

While (result.Next()) {
   ; ID FleetNumber Registration SatNavVehNumber
   mainObj= ##class(%Object).$new()
     s object = ##class(%Object).$new()
     s object.id = result.Data("ID"
     s object.reg = result.Data("Registration")
     s object.snNum = result.Data("SatNavVehNumber")

     mainObj.data = object     ; store all the resultSet into "data":....
  do array.$push(mainObj)


I think I prefer your method, but I've noted my new possible solution here as an alternative
any other solutions ?


I've been following the tutorial, and I noticed %PARALLEL as in select %parallel from sqluser.newConsignments

it's forcing multi-cores to be used to solve the sql

i tried that on exactly the same sql above and the first time I ran it the time went back up to over 4 seconds, but when I ran it again (buffered globals) I got even better results.

Row count: 31 Performance: 0.151 seconds  294 global references

looking at the plan clearly showed a different way of fetching the same data.

seems there's some mileage in playing with the sql with subtly different parameters especially if every second counts

Yesterday, I asked for the latest version of cache->nodejs files.

The response is

4.2.1. I will however try to find out more details if/when we are going to support 5.x.x.

I would ask that intersystems add nodeJS support files to their download area.
We can already filter cache, ensemble . . .  and platform etc. why not nodeJs

Can you please add all versions of NodeJS files to the download area including any beta versions (eg 5.x.x)

I cannot be the only one asking for this information ad subsequent download


can you introduce cookies (or something similar) to allow you to totally disregard  any results in certain areas.

for instance, I'm a small developer and so I do not use Ensemble, DeepSee, Iknow and so on.

also if you are on window, prehaps you could filter out VMS, Unix etc

narrowing down searches fasst is often the clue to finding what you are really searching for.

perhaps a filter with a series of tickboxes (defaults to everything)