Remember the company phonebook stored in TerminusDB? It has been a few months and there is a new recruit:
| Employee id | Name | Title | Team | Manager |
|---|---|---|---|---|
| 005 | Ethan Abbott | Backend Developer | IT | 004 |
| Employee id | Contact number | Home address | Postcode |
|---|---|---|---|
| 005 | 070 7796 8035 | 84 Shore Street, Stoer | IV27 2TG |
Also, the Marketing Manager Destiny has moved to a new address:
| Employee id | Contact number | Home address | Postcode |
|---|---|---|---|
| 001 | (01986) 113367 | 73 Lairg Road, Newbigging | PH12 3RP |
How are we going to update the records?
Let us first look at how to update Destiny's Address. We will use a script called update_data.js.
Let's examine the parts of the script. We import the Employee document that represents Destiny. Since we know the id, we will use getDocument:
const destiny = await client.getDocument({"id":"Employee/001"});We know destiny is an Employee object so we can go ahead and update the details:
// will have to delete "@id" because the database will create a new one
delete destiny.address['@id'];
destiny.address.postcode = "PH12 3RP";
destiny.address.street = "Lairg Road";
destiny.address.street_num = 73;
destiny.address.town = "Newbigging";
The script then sends destiny back to the database with updateDocument. The difference between addDocument and updateDocument is that if an object already exists updateDocument will replace the old with the new.
await client.updateDocument(destiny);Now let's work on our new recruit. We now create ethan and link Ethan's manager as Employee/004:
const ethan = {
"@type": "Employee",
"employee_id": "005",
name: "Ethan Abbott",
title: "Backend Developer",
team: "IT",
contact_number: "070 7796 8035",
address: {
"@type": "Address",
postcode: "IV27 2TG",
street: "Shore Street",
street_num: 84,
town: "Stoer"
},
manager: "Employee/004",
}All is ready so we'll put ethan into the database. Use addDocument to insert ethan:
await client.addDocument(ethan);Before running the script ensure to set the end point, team and user credentials.
Run the scripts:
$ node update_data.js
Use the terminal to check if the database is up-to-date:
const result = await client.getDocument({"as_list":true});
console.log(result);If you are using TerminusCMS, you can also check it in the dashboard.