In ACL of an object 'Hotel' i am trying to save id of 'Parse.User' object. I am saving ACL in beforeSave(). While saving object it gives me an error as "Uncaught Tried to save an object with a pointer to a new, unsaved object" Which i am unable to resolve.
Assign User function:
exports.assignUser = function(params) {
if(!params || !params.userId || !params.id) {
console.log(Response.ParametersEmpty);
params.error(Response.EmptyParameters);
} else {
var Hotel = Parse.Object.extend('Hotel');
var dsQuery = new Parse.Query(Hotel);
dsQuery.equalTo('objectId', params.id);
dsQuery.first({
success: function(_hotel) {
if(_hotel) {
_hotel.set('tempAssignedUser', params.userId);
_hotel.add('users', params.userId);
_hotel.save(null, {
success: function(_hotel) {
params.success(_hotel);
},
error: function(_hotel, error) {
params.error(Response.InternalServerError);
}
});
} else {
params.error(Response.NotFound);
}
},
error: function(error) {
params.error(Response.InternalServerError);
}
});
}
};
beforeSave()
Parse.Cloud.beforeSave('Hotel', function(req, res) {
var hotel = req.object;
//CREATING AND SETTING ACLS TO Hotel
var hotelACL = new Parse.ACL();
**if(hotel.get('tempAssignedUser')) {
hotelACL.setWriteAccess(hotel.get('tempAssignedUser'), true);
hotelACL.setReadAccess(hotel.get('tempAssignedUser'), true);
hotel.unset('tempAssignedUser');
}** // If i remove this if condition, my code is working fine
hotelACL.setRoleWriteAccess('ADMIN', true);
hotelACL.setRoleReadAccess('ADMIN', true);
hotelACL.setRoleWriteAccess('SUPER_USER', true);
hotelACL.setRoleReadAccess('SUPER_USER', true);
hotelACL.setPublicReadAccess(true);
hotel.setACL(hotelACL);
res.success();
}
Hotelobject with a pointer toUserobject, which isn't saved. So try saveUserobject, and then saveHotelobject. - Juri Noga