规则引擎函数里面的Meteor bindEnvironment失去了它的这个对象

时间:2017-08-11 08:10:01

标签: javascript meteor rule-engine

var process_request_rule = [
  {
    "name": "rule-name",
    "condition": Meteor.bindEnvironment(function (R) {
      R.when(this.request.type == 'some-type');
    })
  }];

在上面的代码中, this.request 未定义为指向Meteor对象而不是函数对象。经过研究才知道使用箭头功能可能会解决问题。尝试使用如下所示。

var process_request_rule = [
  {
    "name": "rule-name",
    "condition": Meteor.bindEnvironment((R) => {
      R.when(this.request.type == 'some-type');
     })
  }];

仍然没有运气,请帮我绑定这个对象

1 个答案:

答案 0 :(得分:1)

您可以使用Meteor.bindEnvironment删除,也可以只使用传递给condition回调的第二个参数 - 它与假定的this相同。 https://github.com/mithunsatheesh/node-rules/blob/master/lib/node-rules.js#L94

这样的事情:

var process_request_rule = [
  {
    "name": "rule-name",
    "condition": Meteor.bindEnvironment(function(R, session) {
      R.when(session.request.type == 'some-type');
     })
  }];