Skip to content

Instantly share code, notes, and snippets.

@slmyers
Last active August 29, 2015 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save slmyers/f4fe8a8cd521cbe2de75 to your computer and use it in GitHub Desktop.
Save slmyers/f4fe8a8cd521cbe2de75 to your computer and use it in GitHub Desktop.
Ember Query or Create Pattern
import Ember from 'ember';
export default Ember.Route.extend({
currentModel: null,
singleModel: false,
model: function(){
function closure(username) {
// using firebase adapter
return store.query('user', {
orderBy: 'username',
equalTo: username
}).then(function(array){
if(array.get('length') === 0){
var usr = store.createRecord('user', {
username: username
});
self.set('singleModel', true);
return usr.save();
}
return array;
});
}
var self = this;
var store = this.store;
// getData() omitted for brevity
return this.getData().then(function(value){
return closure(value);
});
},
/*
* the model returned from the model hook can be an array or a single model
* here we determine which and set the controller model appropriately
*/
renderTemplate: function(controller, model){
if(this.get('singleModel')){
this.set('currentModel', model);
this.render('controlPanel', {});
}else {
// in my case I always expect a single model
this.set('currentModel', model.get('firstObject'));
controller.set('model', this.get('currentModel'));
this.render('controlPanel', {});
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment