Mura ORM With Mura.js
Mura.js enables JavaScript developers to interact with Mura ORM, exposing access to its ORM Feed API, and allows for common CRUD (Create, Read, Update, and Delete) functionality.
Mura.js CRUD Functionality
Outlined below are code examples for performing basic CRUD operations on Mura ORM objects/entities via Mura.js. For developers who are primarily used to working with server-side languages, it may take a little time to adjust to working on the client side, because we need to "wait" until the object/entity is loaded in order to work with it. For this reason, it may be helpful to review how to work with JavaScript Promises.
Loading/Reading Mura ORM Objects/Entities
This example simply illustrates how to load a Mura ORM entity, using Mura.js.
<script> var personid = 'some-uuid'; Mura.getEntity('person') .loadBy('personid', personid) .then(function(person) { console.log(person); }) .catch(function(err) { console.log(err.get('errors')); }); </script>
Creating/Updating Mura ORM Objects/Entities
This example drives home how to segregate your Ajax calls using JS Promises, and avoid nesting or stacking your Mura.js methods.
<script> var getPersonByID = function(personid) { return new Promise(function(resolve, reject) { Mura.getEntity('person').loadBy('personid', personid) .then(function(person) { resolve(person); }) .catch(function(err) { reject(err); console.log(err.get('errors')); }); }); }; var savePerson = function(person) { return new Promise(function(resolve, reject) { person.save() .then(function(result) { resolve(result); }) .catch(function(err) { reject(err); }); }); } getPersonByID('some-uuid') .then(function(person) { person.set('namelast', 'Withington'); return savePerson(person); }) .then(function(result) { console.log(result); }) .catch(function(err) { console.log(err); }); </script>
Deleting Mura ORM Objects/Entities
This is another example of how to segregate your Ajax calls using JS Promises to avoid nesting your Mura.js methods.
<script> var getPersonByID = function(personid) { return new Promise(function(resolve, reject) { Mura.getEntity('person').loadBy('personid', personid) .then(function(person) { resolve(person); }) .catch(function(err) { reject(err); console.log(err.get('errors')); }); }); }; var deletePerson = function(person) { return new Promise(function(resolve, reject) { person.delete() .then(function(result) { resolve(result); }) .catch(function(err) { reject(err); }); }); } getPersonByID('some-uuid') .then(function(person) { return deletePerson(person); }) .then(function(result) { console.log(result); }) .catch(function(err) { console.log(err); }); </script>
Mura.js Feed API
The following example illustrates how to obtain a feed of Mura ORM objects/entities, and then loop over the returned recordset. As you'll see, it's quite similar to using Mura's ORM Feed syntax.
var person; Mura .getFeed('person') .where() //optional .prop('namelast') .isEQ('Levine') .orProp('namelast') .beginsWith('Withing') .getQuery() .then(function(people) { // handle success people.each(function(person, idx) { result = person.get('namefirst') + ' ' + person.get('namelast'); console.log(result); }); }) .catch(function(err) { // handle error console.log(err); });
See the "Key Methods" area of the Feed Bean section, for details on the Mura.js Feed API Methods.