Триггер MarkLogic 9 sjs не может получить доступ к данным документа post-commit ()

Недавно я перешел на MarkLogic 9.0.2, теперь я перемещаю всю логику триггеров с xqy на sjs.

Вот моя проблема, у меня есть триггер в sjs, он создается в xqy вот так:

xquery version "1.0-ml";

import module namespace trgr="http://marklogic.com/xdmp/triggers"
   at "/MarkLogic/triggers.xqy";

xdmp:log("TRGR: Installing tp-firstTimeSeen"),

trgr:create-trigger("tp-01-firstTimeSeen", "Trigger to Alert First time a device is seen by a tp-sensor ",
  trgr:trigger-data-event(
    trgr:collection-scope("tresspasser"),
    trgr:document-content("create"),
    trgr:post-commit()
  ),
  trgr:trigger-module(xdmp:database(), "/", "/triggers/tp-01-first-time-only.sjs"),
  fn:true(), (: enabled / disabled :)
  xdmp:default-permissions(),
  fn:false()
)

Код триггера пытается найти документ, который был только что создан, чтобы кое-что проверить.

Обратите внимание, что uri кажется "просто там" ...

Код триггера в sjs:

declareUpdate();

// load utilities
//var scc = require("/lib/sccsslib.sjs");

var uri;

xdmp.log(fn.concat('TRESSPASSER-TRIGGER ON ',uri, ' was triggered...'))

var data = fn.doc(uri);
xdmp.log(fn.concat('data : ',data))
var event = data.toObject();
var sensorId = event.event.sensorid;
var sData = event.event.sensordata;

for (i = 0; i < sData.length; ++i){
  // search for each mac adres in the database
  var mac = sData[i].mac;
  // search all events from this sensor
  var hit = cts.search(cts.andQuery([cts.collectionQuery("tresspasser"),
                                        cts.jsonPropertyValueQuery("sensorid",sensorId),
                                        cts.jsonPropertyValueQuery("mac",mac)])).toArray();
  if (fn.empty(hit)) {
    // we have never seen this mac before
    // send alert
    xdmp.log('TODO: SEND ALERT')
  } else {
    xdmp.log(fn.concat('SEEN BEFORE : ',mac))
  }
};

;

Теперь триггер активирован и срабатывает, но в журнале объект данных пуст.

Бревно:

2017-12-17 15:43:59.707 Info: TRESSPASSER-TRIGGER ON /data/sensors/tresspasser/12345678/b39b-749c-acc2.json was triggered...
2017-12-17 15:43:59.707 Info: data :
2017-12-17 15:43:59.711 Notice: JS-JAVASCRIPT: var sensorId = event.event.sensorid; -- Error running JavaScript request: TypeError: Cannot read property 'sensorid' of undefined
2017-12-17 15:43:59.711 Notice:+in /triggers/tp-01-first-time-only.sjs, at 15:27 [javascript]
2017-12-17 15:43:59.711 Notice:+in /triggers/tp-01-first-time-only.sjs [javascript]

Если я выполню тот же код в консоли запросов, он сработает ...

Что мне не хватает?


person Hugo Koopmans    schedule 17.12.2017    source источник
comment
Кажется, у меня отлично работает в ML 9.0-4. Не могли бы вы обновить?   -  person grtjn    schedule 25.05.2018