使用 Mixpanel JQL 访问 .filter() 范围内的变量
Accessing variable in .filter() scope with Mixpanel JQL
使用 Mixpanel 和 JQL 我试图从 .filter()
函数中的全局范围访问变量,因此我只能查询所需的记录:
var selectedVal = 'foo';
MP.api.jql(function main() {
return People()
.filter(function(user) {
// Compare with 'selectedVal'
return user.properties["user-title"] == selectedVal;
})
;
}, selectedVal).done(function(results) {
// ...
});
错误:
{"request": "/api/2.0/jql/", "error": "Uncaught exception ReferenceError: selectedVal is not defined\n return user.properties[\"user-title\"] == selectedVal;\n ^\n\nStack trace:\nReferenceError: selectedVal is not defined\n at :6:70\n"}
如果有人能指出我正确的方向,那就太好了。谢谢
编辑:
目前我正在使用一种变通方法,即获取所有人员实体并在之后进行过滤。这根本不是最佳选择,因此我仍在寻找一种方法来获取 People 实体 属性 条件下的结果集。
使用bind
。您可以在 MP.api.jql
块外部和 jql
函数内部声明函数,您将作为参数传入,main.bind(null,whatever)
.
查看未缩小的 mixpanel-platform JS,jql()
函数接受一个 params
对象作为第二个参数:
...
jql: function(script, params, settings) {
params = params || {};
settings = _.extend({type: 'POST'}, settings);
return this.query('/api/2.0/jql/', {
script: String(script),
params: JSON.stringify(params)
}, settings, function(data) {
return JSON.parse(data);
});
},
...
解法:
var params = {
selectedVal : 'foo'
};
MP.api.jql(function main() {
return People()
.filter(function(user) {
return user.properties["user-title"] == params.selectedVal;
})
;
}, params).done(function(results) {
// ...
});
使用 Mixpanel 和 JQL 我试图从 .filter()
函数中的全局范围访问变量,因此我只能查询所需的记录:
var selectedVal = 'foo';
MP.api.jql(function main() {
return People()
.filter(function(user) {
// Compare with 'selectedVal'
return user.properties["user-title"] == selectedVal;
})
;
}, selectedVal).done(function(results) {
// ...
});
错误:
{"request": "/api/2.0/jql/", "error": "Uncaught exception ReferenceError: selectedVal is not defined\n return user.properties[\"user-title\"] == selectedVal;\n ^\n\nStack trace:\nReferenceError: selectedVal is not defined\n at :6:70\n"}
如果有人能指出我正确的方向,那就太好了。谢谢
编辑:
目前我正在使用一种变通方法,即获取所有人员实体并在之后进行过滤。这根本不是最佳选择,因此我仍在寻找一种方法来获取 People 实体 属性 条件下的结果集。
使用bind
。您可以在 MP.api.jql
块外部和 jql
函数内部声明函数,您将作为参数传入,main.bind(null,whatever)
.
查看未缩小的 mixpanel-platform JS,jql()
函数接受一个 params
对象作为第二个参数:
...
jql: function(script, params, settings) {
params = params || {};
settings = _.extend({type: 'POST'}, settings);
return this.query('/api/2.0/jql/', {
script: String(script),
params: JSON.stringify(params)
}, settings, function(data) {
return JSON.parse(data);
});
},
...
解法:
var params = {
selectedVal : 'foo'
};
MP.api.jql(function main() {
return People()
.filter(function(user) {
return user.properties["user-title"] == params.selectedVal;
})
;
}, params).done(function(results) {
// ...
});