使用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 / jq /”,“error”:“未捕获异常ReferenceError:未定义selectedVal \ n返回user.properties [\”user-title \“] == selectedVal; \ n ^ \ n \ n堆栈跟踪:\ n参考错误:未定义selectedVal \ n在:6:70 \ n“}
如果有人能指出我正确的方向,那就太好了。谢谢
编辑:
目前,我正在使用解决方法,获取所有人员实体并在之后进行过滤。这根本不是最优的,因此我仍然在寻找一种方法来获得People实体的属性条件的结果集。
答案 0 :(得分:1)
使用bind
。您可以在MP.api.jql
块之外和jql
函数内声明函数,您可以作为参数main.bind(null,whatever)
传入。
答案 1 :(得分:0)
查看未明确的 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) {
// ...
});