Clone Parse Server object

时光总嘲笑我的痴心妄想 提交于 2019-12-12 14:54:38

问题


I have a Parse object (well, an array of parse objects). I want to make a clone of the objects but everything I try fails...in that changing the original object attributes also changes the clone's corresponding attribute. I have tried using Parse.Object.clone(), creating new array of objects, changing to JSON and then doing a deep clone but nothing works. After some research I came across this and this but this does offer a real solution.

Is there no good way to clone Parse objects and have the attributes be completely separate??

I want to essentially have a 'cancel' changes button which would revert to the cloned versions and not save.


回答1:


Parse.Object.clone returns a shallow copy. For a deep copy (completely independant objects) I've written and used this code:

var originalObject = ...
var objectJSON = originalObject.toJSON();
delete objectJSON.objectId; // force it to be a new DB object if you save it
var twin = new Parse.Object( object.className );
twin.set( objectJSON );

In my opinion a Parse.Object.deepClone method would be nice...




回答2:


What's happening with Parse.Object.clone()? That seems like it should be what you want.

the iOS (and likely the android) SDK has a revert method on objects to reset to the last time it was saved / fetched.

Keep in mind that for objects in javascript, passing them into functions treats them as pass by reference, more or less, so changes within a function will change the object passed in. Sometimes useful and sometimes annoying.

If Parse.Object.clone() isn't working, My next suggestion, while annoying, would be to create a new object shell and fetch it / query for the object if you need includes when you need to "reset" the data.



来源:https://stackoverflow.com/questions/44034780/clone-parse-server-object

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!