JayData is a cross-platform, cross-provider, cross-layer Javascript data access library designed to streamline your data operations in mobile applications, web applications and in nodeJS serverside code.
And this is how you can get it to work:
First, include the jaydata.js library file.
1 |
<script type=<span class="str">"text/javascript"</span> src=<span class="str">"Scripts/JayData.js"</span>></script> |
Or…
1 |
require(<span class="str">'jaydata'</span>); |
Then, define a data model. If you plan to consume an OData service, use the jaysvcutil.exe tool to auto-generate the model definition.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$data.Entity.extend(<span class="str">"$org.types.Department"</span>, { Id: { type: <span class="str">"int"</span>, key: <span class="kwrd">true</span>, computed: <span class="kwrd">true</span> }, Name: { type: <span class="str">"string"</span>, required: <span class="kwrd">true</span> }, Address: { type: <span class="str">"string"</span> }, Employees: { type: <span class="str">"Array"</span>, elementType: <span class="str">"$org.types.Employee"</span>, inverseProperty: <span class="str">"Department"</span> } }); $data.Entity.extend(<span class="str">"$org.types.Employee"</span>, { Id: { type: <span class="str">"int"</span>, key: <span class="kwrd">true</span>, computed: <span class="kwrd">true</span> }, FirstName: { type: <span class="str">"string"</span>, required: <span class="kwrd">true</span> }, LastName: { type: <span class="str">"string"</span>, required: <span class="kwrd">true</span> }, Department: { type: <span class="str">"$org.types.Department"</span>, inverseProperty:<span class="str">"Employees"</span>} }); $data.EntityContext.extend(<span class="str">"$org.types.OrgContext"</span>, { Department: { type: $data.EntitySet, elementType: $org.types.Department }, Employee: { type: $data.EntitySet, elementType: $org.types.Employee } }); |
Now that the model is defined, instantiate the context (ie. set up the connection or the local database):
1 2 3 4 |
$org.context = <span class="kwrd">new</span> $org.types.OrgContext({ name: <span class="str">"oData"</span>, oDataServiceHost: <span class="str">"http://localhost:49223/Organization.svc"</span> }); $org.context.onReady(function(){ //access data after the context has been initialized }); |
And run queries…
1 2 |
<span class="kwrd">var</span> promise = $org.context.Employee.filter(<span class="kwrd">function</span> (item) { <span class="kwrd">return</span> item.LastName.toLowerCase().startsWith(<span class="kwrd">this</span>.s); }, { s: lowerstr }).toArray(); promise.then(renderResultCallback); |
Delete entities…
1 2 3 |
<span class="kwrd">var</span> emp = <span class="kwrd">new</span> $org.types.Employee({ Id: employeeId }); $org.context.Employee.remove(emp); $org.context.saveChanges(); |
Create new ones…
1 2 3 |
<span class="kwrd">var</span> emp = <span class="kwrd">new</span> $org.types.Employee({ FirstName: <span class="str">'John'</span>, LastName: <span class="str">'Doe'</span> }); $org.context.Employee.add(emp); $org.context.saveChanges(); |
Or update existing ones…
1 2 3 |
$org.context.Employee.attach(myemp); myemp.FirstName = <span class="str">'Eric'</span>; $org.context.saveChanges(); |
Find more apps with source code on JayData example page and follow JayData blog to get the latest behind the scenes scoop from the JayData HQ and improve your skills with our tutorials!