Created
January 14, 2014 22:42
-
-
Save dcarroll/8427394 to your computer and use it in GitHub Desktop.
Javascript operations for Visualforce Remote Objects. Totally subject to change as this feature is currently in Developer Preview until Summer '14.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* PRE - model declaration on vf page | |
<apex:remoteObjects> | |
<apex:remoteObjectModel name="Account" fields="Id,Name" /> | |
</apex:remoteObjects> | |
*/ | |
/* INSTANCE */ | |
// 1. W/o default properties | |
var acc = new SObjectModel.Account(); | |
// 2. W/ default properties | |
var acc = new SObjectModel.Account({ Name: 'Blah' }); | |
/* GETTER/SETTER */ | |
// can use full API name of field or shorthand */ | |
acc.set('Name', 'Blah'); | |
acc.get('Name'); | |
/* CREATE */ | |
// 1. No arguments - typically used with a instance with properties | |
var acc = new SObjectModel.Account({ Name: 'Blah' }); | |
acc.create(); // NOTE: all CRUD methods are async | |
// 2. W/ properties | |
var acc = new SObjectModel.Account(); | |
acc.create({ Name: 'Blah' }); // NOTE: all CRUD methods are async | |
// 3. W/ callback | |
var acc = new SObjectModel.Account({ Name: 'Blah' }); | |
acc.create(function(err) { | |
if (err) alert(err); | |
else alert(acc.get('Id')); | |
}); | |
// 4. W/ properties & callback | |
var acc = new SObjectModel.Account(); | |
acc.create({ Name: 'Blah' }, function(err) { | |
if (err) alert(err); | |
else alert(acc.get('Id')); | |
}); | |
/* RETRIEVE */ | |
// 1. W/ criteria & callback | |
var acc = new SObjectModel.Account(); | |
acc.retrieve({ | |
where: { | |
Name: { eq: 'Blah' } | |
} | |
}, function(err, records) { | |
if (err) alert(err); | |
else alert(records.length); | |
}); | |
// NOTES: | |
// Criteria can be empty as well ({}) | |
// where can have operators: eq,gt,lt,and,or,like | |
// we also support limit and offset properties on criteria | |
// 2. W/ criteria function that returns the criteria object & callback | |
var acc = new SObjectModel.Account({ Name: 'Blah' }); | |
acc.retrieve(function() { | |
var criteria = { | |
where: { | |
Name: { eq: this.get('Name') } | |
} | |
}; | |
return criteria; | |
}, function(err, records) { | |
if (err) alert(err); | |
else alert(records.length); | |
}); | |
// 3. In 190 ONLY we can also call retrieve without criteria, in which case it is auto-generated based on instance properties | |
// this behaves just like 1 or 2 above | |
var acc = new SObjectModel.Account({ Name: 'Blah' }); | |
acc.retrieve(function(err, records) { | |
if (err) alert(err); | |
else alert(records.length); | |
}); | |
/* UPDATE */ | |
// 1. W/o any arguments | |
var acc = new SObjectModel.Account({ | |
Id: '001xxxxxxxxxxxxxxx', | |
Name: 'Blah Blah' | |
}); | |
acc.update(); // NOTE: all CRUD methods are async | |
// 2. W/ callback | |
var acc = new SObjectModel.Account({ | |
Id: '001xxxxxxxxxxxxxxx', | |
Name: 'Blah Blah' | |
}); | |
acc.update(function(err, ids) { | |
if (err) alert(err); | |
else alert(ids.length); | |
}); | |
// 3. W/ id | |
var acc = new SObjectModel.Account({ | |
Name: 'Blah Blah' | |
}); | |
acc.update('001xxxxxxxxxxxxxxx'); // NOTE: all CRUD methods are async | |
// 4. W/ ids - bulk update | |
var acc = new SObjectModel.Account({ | |
Name: 'Blah Blah' | |
}); | |
acc.update(['001xxxxxxxxxxxxxxx', '001xxxxxxxxxxxxxxx']); // NOTE: all CRUD methods are async | |
// 5. W/ properties to update - preferable if only some properties are to be updated | |
var acc = new SObjectModel.Account({ | |
Id: '001xxxxxxxxxxxxxxx' | |
}); | |
acc.update({ | |
Name: 'Blah Blah' | |
}); // NOTE: all CRUD methods are async | |
// 6. W/ id & properties | |
var acc = new SObjectModel.Account(); | |
acc.update('001xxxxxxxxxxxxxxx', { | |
Name: 'Blah Blah' | |
}); // NOTE: all CRUD methods are async | |
// 7. W/ ids & properties | |
var acc = new SObjectModel.Account(); | |
acc.update(['001xxxxxxxxxxxxxxx', '001xxxxxxxxxxxxxxx'], { | |
Name: 'Blah Blah' | |
}); // NOTE: all CRUD methods are async | |
// 8. W/ properties & callback | |
var acc = new SObjectModel.Account({ | |
Id: '001xxxxxxxxxxxxxxx' | |
}); | |
acc.update({ | |
Name: 'Blah Blah' | |
}, function(err, ids) { | |
if (err) alert(err); | |
else alert(ids.length); | |
}); | |
// 9. W/ ids, properties & callback | |
var acc = new SObjectModel.Account(); | |
acc.update(['001xxxxxxxxxxxxxxx', '001xxxxxxxxxxxxxxx'], { | |
Name: 'Blah Blah' | |
}, function(err, ids) { | |
if (err) alert(err); | |
else alert(ids.length); | |
}); | |
/* DELETE (del) */ | |
// 1. W/o any arguments | |
var acc = new SObjectModel.Account({ | |
Id: '001xxxxxxxxxxxxxxx' | |
}); | |
acc.del(); // NOTE: all CRUD methods are async | |
// 2. W/ callback | |
var acc = new SObjectModel.Account({ | |
Id: '001xxxxxxxxxxxxxxx' | |
}); | |
acc.del(function(err, ids) { | |
if (err) alert(err); | |
else alert(ids.length); | |
}); | |
// 3. W/ id | |
var acc = new SObjectModel.Account(); | |
acc.del('001xxxxxxxxxxxxxxx'); // NOTE: all CRUD methods are async | |
// 4. W/ ids - bulk delete | |
var acc = new SObjectModel.Account(); | |
acc.del(['001xxxxxxxxxxxxxxx', '001xxxxxxxxxxxxxxx']); // NOTE: all CRUD methods are async | |
// 5. W/ id & callback | |
var acc = new SObjectModel.Account(); | |
acc.del('001xxxxxxxxxxxxxxx', function(err, ids) { | |
if (err) alert(err); | |
else alert(ids.length); | |
}); | |
// 6. W/ ids & callback | |
var acc = new SObjectModel.Account(); | |
acc.update(['001xxxxxxxxxxxxxxx', '001xxxxxxxxxxxxxxx'], function(err, ids) { | |
if (err) alert(err); | |
else alert(ids.length); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment