parse-platformparse-serverparse-javascript-sdk

How to unset nested property in `beforeSave` cloud function?


I've extended a Parse.Object. Now I want to unset a nested property before saving an object. This nested property settings is an object.

So my hook looks like this:

Parse.Cloud.beforeSave('MyObject', req => {
   if (req.object.get('settings').propertyToUnset) {
       req.object.unset('settings.propertyToUnset');
   }
});

However, that produces the error Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

How does unset work for nested properties?


Solution

  • The solution is to use the plain JavaScript command delete to delete a property of nested object settings:

    Parse.Cloud.beforeSave('MyObject', req => {
        if (req.object.get('settings').propertyToUnset) {
            delete req.object.get('settings').propertyToUnset;
        }
    });