调用宏时,我在响应中遇到以下错误:
代码= 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%可重复的。
此错误的含义是什么?如何更正?
感谢。
答案 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缺失/尚未实现的功能(您可以请求...)。