Copy Existing Database Item

Is there a good pattern for copying database objects? To my understanding, you cannot edit the object id. So, if you copy an existing object to a newly created object, it will assume all properties of the existing object including the id. Since the id can’t be changed, is there a better way to copy an existing object?

Somewhat of an answer to my question. So, my approach was the following:

let copyObj = DB.object.create();
copyObj = existingObj;

This was giving me errors and was updating the existing object rather than copying and creating a new object. This is because copyObj is being reinitialized as existingObj. The work around is the following:

let copyObj = DB.object.create(existingObj);

This creates a new object with the contents of the existing object rather than overwriting the copyObj variable to contain the contents of the existingObj.

1 Like

Please note that the relationships on the copyObj need to managed separately.

1 Like

Yes correct. copyObj does NOT contain relationships to existingObj. For instance, if existingObj belongs to a User object, copyObj will not have that information from the solution code alone. One would then have to update the User of copyObj.

1 Like

You could also use the JavaScript method Object.assign if the second object was already created:

var one = DB.user.create();
one.name = "One";
one.save();

var two = DB.user.create();
Object.assign(two, one);
two.save();

console.log("One ", one);
console.log("Two ", two);

// One  DatabaseObject{name: One}
// Two  DatabaseObject{name: One}