Skip to content

Instantly share code, notes, and snippets.

View vseventer's full-sized avatar

Mark van Seventer vseventer

View GitHub Profile
@vseventer
vseventer / gist:2882217
Created June 6, 2012 14:26
JavaScript Library aggregation leaderboard
// Scores collection
// [{ user: 'Alice', score: 2 },
// { user: 'Alice', score: 1 },
// { user: 'Bob', score: 4 }]
// Create leaderboard
var agg = new Kinvey.Aggregation();
agg.on('user');
agg.setInitial({ total: 0 });
agg.setReduce(function(doc, out) {
@vseventer
vseventer / gist:2888834
Created June 7, 2012 13:36
Updating an entity.
var entity = new Kinvey.Entity('my-collection');
entity.set('key', 'value');
entity.save({
success: function(entity) {
var value = entity.get('key');
// value == "value"
// Entity is now created, lets update another field.
entity.set('foo', 'bar');
entity.save({
@vseventer
vseventer / gist:3017968
Created June 29, 2012 13:36
Snippet to test whether CORS works properly.
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://baas.kinvey.com/appdata/kidXXXX', true);
xhr.setRequestHeader('Authorization', 'Basic foo:bar');
// Enable the line below to provide Android support.
//xhr.setRequestHeader('X-Kinvey-Origin', 'http://www.example.com');
xhr.onload = function() {
console.log("LOADED", this.status, this.responseText);
};
@vseventer
vseventer / gist:3206763
Created July 30, 2012 13:09
Save the devices current position to Kinvey.
navigator.geolocation.getCurrentPosition(function(position) {
var coords = position.coords;
var entity = new Kinvey.Entity({
_geoloc: [coords.longitude, coords.latitude]
}, 'test-collection');
entity.save({
success: function(entity) {
// entity is now saved.
}
});
@vseventer
vseventer / gist:3217793
Created July 31, 2012 15:24
Kinvey JavaScript Library: Using the cached store.
var entity = new Kinvey.Entity({/*attributes*/}, 'collection', {
store: 'cached'
});
var collection = new Kinvey.Collection('collection', {
store: 'cached'
});
@vseventer
vseventer / gist:3217803
Created July 31, 2012 15:26
Kinvey JavaScript Library: Setting the caching policy.
var entity = new Kinvey.Entity({/*attributes*/}, 'collection', {
store: 'cached',
options: { policy: 'cachefirst' }
});
entity.load('my-entity', {
success: function(response) {
// response is the entity instance.
}
});
@vseventer
vseventer / gist:3217817
Created July 31, 2012 15:27
Kinvey JavaScript Library: Leaderboard example.
var collection = new Kinvey.Collection('scores', {
store: 'cached',
options: { policy: 'cachefirst' }
});
// The leaderboard should override the collections cachefirst policy.
var leaderboard = new Kinvey.Aggregation().on('player');
collection.aggregate(leaderboard, {
policy: 'nocache',// Overrides cachefirst policy.
success: function(response) {
@vseventer
vseventer / gist:3217821
Created July 31, 2012 15:27
Kinvey JavaScript Library: Initialization for offline usage.
Kinvey.init({
appKey: '<your-app-key>',
appSecret: '<your-app-secret>',
sync: true
});
@vseventer
vseventer / gist:3217822
Created July 31, 2012 15:28
Kinvey JavaScript Library: Using the offline store.
var entity = new Kinvey.Entity({/*attributes*/}, 'collection', {
store: 'offline',
options: { policy: 'cachefirst' }// Optional, caching policy.
});
var collection = new Kinvey.Collection('collection', {
store: 'offline',
options: { policy: 'cachefirst' }// Optional, caching policy.
});
@vseventer
vseventer / gist:3217830
Created July 31, 2012 15:29
Kinvey JavaScript Library: conflict resolution policy.
Kinvey.Sync.configure({
conflict: Kinvey.Sync.serverAlwaysWins
/* or:
conflict: Kinvey.Sync.clientAlwaysWins
*/
});