如何取消设置“beforeSave”云函数中的嵌套属性?
Posted
技术标签:
【中文标题】如何取消设置“beforeSave”云函数中的嵌套属性?【英文标题】:How to unset nested property in `beforeSave` cloud function? 【发布时间】:2019-12-24 15:12:09 【问题描述】:我扩展了Parse.Object
。现在我想在保存对象之前取消设置嵌套属性。这个嵌套属性settings
是一个对象。
所以我的钩子看起来像这样:
Parse.Cloud.beforeSave('MyObject', req =>
if (req.object.get('settings').propertyToUnset)
req.object.unset('settings.propertyToUnset');
);
但是,这会产生错误Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
unset
如何用于嵌套属性?
【问题讨论】:
【参考方案1】:你可以试试这样的:
Parse.Cloud.beforeSave('MyObject', async req =>
const settings = req.object.get('settings');
await settings.fetch();
if (settings.get('propertyToUnset'))
settings.unset('propertyToUnset');
await settings.save();
);
【讨论】:
也就是说嵌套对象默认不抓取? 它不起作用:“fetch 不是函数”。如果我使用delete req.object.get('settings').propertyToUnset
,它就可以工作。所以 Parse 没有办法用 unset
做到这一点?
我假设settings
是Pointer
。它是一个对象吗?在这种情况下,delete
是要走的路。
它是一个对象,是的。谢谢,我会在问题中编辑它。【参考方案2】:
解决方法是使用纯 javascript 命令delete
删除嵌套对象settings
的属性:
Parse.Cloud.beforeSave('MyObject', req =>
if (req.object.get('settings').propertyToUnset)
delete req.object.get('settings').propertyToUnset;
);
【讨论】:
以上是关于如何取消设置“beforeSave”云函数中的嵌套属性?的主要内容,如果未能解决你的问题,请参考以下文章
解析服务器 + 云代码:Parse.Object 上的 beforeSave()