Meteor bindEnvironment 中的规则引擎函数丢失了它的 this 对象
rule engine function inside Meteor bindEnvironment losing its this object
var process_request_rule = [
{
"name": "rule-name",
"condition": Meteor.bindEnvironment(function (R) {
R.when(this.request.type == 'some-type');
})
}];
在上面的代码中,this.request 变得未定义,因为 this 指向 Meteor 对象而不是函数对象.经过研究得知使用箭头函数可能会解决问题。尝试使用它,如下所示。
var process_request_rule = [
{
"name": "rule-name",
"condition": Meteor.bindEnvironment((R) => {
R.when(this.request.type == 'some-type');
})
}];
还是不行,请帮我绑定this对象
您可以使用 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');
})
}];
var process_request_rule = [
{
"name": "rule-name",
"condition": Meteor.bindEnvironment(function (R) {
R.when(this.request.type == 'some-type');
})
}];
在上面的代码中,this.request 变得未定义,因为 this 指向 Meteor 对象而不是函数对象.经过研究得知使用箭头函数可能会解决问题。尝试使用它,如下所示。
var process_request_rule = [
{
"name": "rule-name",
"condition": Meteor.bindEnvironment((R) => {
R.when(this.request.type == 'some-type');
})
}];
还是不行,请帮我绑定this对象
您可以使用 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');
})
}];