[zetapush]宏错误:代码= SUB_ASSIGN - 消息=分配失败

时间:2016-03-11 15:17:23

标签: macros

调用宏时,我在响应中遇到以下错误:

  

代码= SUB_ASSIGN

     

消息=分配失败

     

位置=减少文件mymacro.zms的第65行

第65行

/** Reduce */
var b = gda(GDA).reduce {
    table: 'myTable',
    start: __parameters.key + '##',
    stop: __parameters.key + '##a',
    page: {
        pageNumber: 0,
        pageSize: 100000000
    },
    initialValue: {
        tR: tR,
        count: 0    
    },
    'columns': ['col1', 'col2'],
    'function': usr:myfunc
};

在Android SDK上看到(而不是在JS SDK上)并且不是100%可重复的。

此错误的含义是什么?如何更正?

感谢。

1 个答案:

答案 0 :(得分:2)

SUB_ASSIGN的(记录不完整)含义是使用a.b.c = d;等语法的赋值失败。 更确切地说,左手操作数由几个分层子部分组成(在我的例子中为a,b和c)。 请注意,SUB_ASSIGN报告编程错误,您应该防范: 在分配a.b.c时,至少a.b必须存在且不为空。 像这样的代码模式应该可以解决这个问题:

// the ?? operator returns true when an expression is defined and not null
if (! a.b ??) {
    a.b = {};
}
...
a.b.c = 0;

或更短,如果适用:

if (! a.b ??) {
    a.b = {c:0};
}

' ??'的相关文件可以在the official API reference documentation

中找到

由于你的代码不包含这样的语句,我认为实际的错误不在于你的reduce调用,而是在你的回调函数(usr:myfunc)中。

此外,为了便于进一步调试: 您提供的错误报告似乎没有包含完整的堆栈跟踪,直到回复' reduce'呼叫。这可能是zetapush API缺失/尚未实现的功能(您可以请求...)。