最终目标是使用Cloud Code中的beforeSave
函数检测现有Parse对象与传入更新之间的更改。
通过parse.com提供的Cloud Code日志,可以看到beforeSave
的输入包含一个名为original
的字段,另一个名为update
。
Cloud Code日志:
Input: {"original": { ... }, "update":{...}
我想知道我们是否以及如何访问原始字段以便在保存之前检测更改的字段。
请注意,我已经尝试了几种方法来解决这个问题但没有成功:
关于request.object.changedAttributes()
的说明:
在beforeSave和afterSave中使用时返回false
- 有关详细信息,请参阅下文:
记录before_save
- 为了便于阅读而进行了总结:
Input: { original: {units: '10'}, update: {units: '11'} }
Result: Update changed to { units: '11' }
[timestamp] false <--- console.log(request.object.changedAttributes())
记录相应的after_save
:
[timestamp] false <--- console.log(request.object.changedAttributes())
答案 0 :(得分:2)
<{1}}的问题。它似乎总是回答错误 - 或者至少在Pattern.compile
中,它将合理地需要。 (参见here以及其他类似帖子)
这是一个通用的解决方法,可以做changeAttributes应该做的事情。
pattern.matcher
当我通过客户端代码或数据浏览器将changedAttributes()
(beforeSave
实例上的数字列)从32更改为1222时,日志显示:
I2015-06-30T20:22:39.886Z]更改了attributes = false
I2015-06-30T20:22:39.988Z] DIY改变了属性= [{ “属性oldValue”:32, “NEWVALUE”:1222}]