Data-storage I
Client-side driven data-storage
{warm-up}
{data-storage}
Why?
What?
How?
{why do web apps need data?}
{what types of data storage?}
json object
[
{
"dateSearched": "1986-10-15T07:00:00.000Z",
"city": "Phoenix",
"agency": "phoenix police",
"outcome": "Killed",
"shots": null,
"victim": {
"name": "David Valenzuela",
"age": "24",
"gender": "Male"
}
},
Relational database
Relational database
The cloud!
The cloud!
Distributed File System (DFS)
class | credits | first_name | last_name | major |
---|---|---|---|---|
info343 | 5 | Alan | Martinez | Sociology |
info343 | 5 | Beth | Kursh | History |
info344 | 4 | Negin | Dahl | Math |
info344 | 4 | Alan | Martinez | Sociology |
class_id | credits |
---|---|
info343 | 5 |
info344 | 4 |
student_id | first_name | last_name | major |
---|---|---|---|
987249 | Alan | Martinez | Sociology |
242434 | Beth | Kursh | History |
class_table
student_table
{pre-defined schema}
{how will we do data storage?}
Parse.com
Schema-less data store
Save data objects (key-value pairs)
Define classes (tables) on the fly
Saves your data in the cloud
Built for CRUD apps (create, read, update, delete)
{sign-up for an account at parse.com}
{fork and clone this repo!}
{start running a local server}
cd Desktop/parse-intro
python -m SimpleHTTPServer 8080
# See page at localhost:8080
What we'll build
Set up
Create a new app on parse.com
Include the Parse library in your index.html
Initialize your application (in js), using ID and app token
<script src="//www.parsecdn.com/js/parse-1.6.0.min.js"></script>
Parse.initialize("application-id", "javascript-key");
Build your form in HTML
{some parse syntax}
Creating data
Extend the core Parse Object
Create a new instance of this class
var ToDo = Parse.Object.extend('ToDo')
var toDoItem = new ToDo()
Create your class
// Initialize app
// Create a new sub-class of the Parse.Object, with name "Music"
// Create a new instance of your Music class
Object properties
Set properties of your object
Get properties of your object
toDoItem.set('importance', 'high')
toDoItem.get('importance') // returns 'high'
Saving data
Built in methods for saving to data-store
The short version
The long version
toDoItem.save()
toDoItem.save(null, {
success: function(todo) {
// Execute any logic after the object is saved.
alert('New object created with objectId: ' + todo.id);
},
error: function(todo, error) {
// Execute any logic that should take place if the save fails.
alert('Failed, with error code: ' + error.message);
}
});
Set properties, save data
// Create a new sub-class of the Parse.Object, with name "Music"
// Create a new instance of your Music class
// Set a property 'band' equal to a band name
// Set a property 'website' equal to the band's website
// Set a property 'song' equal to a song
// Save your instance of your song -- and go see it on parse.com!
{now make it flexible!}
Save data with form inputs
// Click event when form is submitted
$('form').submit(function() {
// Create a new instance of your Music class
/* For each input element, set a property of your
new instance equal to the input's value */
/* After setting each property,
save your new instance back to your database */
return false
})
Querying data
Create a new Parse query for your class
Set parameters for your query
Use .find to execute your query
var query = new Parse.Query(ToDo);
query.equalTo('importance', 'high')
query.find({
success:function(results) {
// Do something with your array of results
}
})
Query your data from parse
// Write a function to get data
var getData = function() {
// Set up a new query for our Music class
/* Set a parameter for your query --
where the website property isn't missing */
/* Execute the query using ".find". When successful,
pass the returned data into your buildList function
*/
}
buildList function
// A function to build your list
var buildList = function(data) {
// Empty out your unordered list
/* Loop through your data, and
pass each element to the addItem function */
}
addItem function
// This function takes in an item, adds it to the screen
var addItem = function(item) {
/* Get parameters (website, band, song)
from the data item passed to the function */
// Append li that includes text from the data item
/* Time pending, create a button that removes the
item on click */
}
Assignments
CRUD Challenge (due next week)
parse
By Michael Freeman
parse
- 1,655