richclient:emberjs:data:crud

Ceci est une ancienne révision du document !


Opérations CRUD

Récupération du store, dans un contrôleur ou un route handler :

let store=this.get('store');

Chargement d'une instance de person

let person = this.get('store').findRecord('person', 1);

Recherche d'une instance de person déjà chargée (ne retourne que si elle est déjà présente dans le store, sans effectuer de requête vers le serveur) :

let person = this.get('store').peekRecord('person', 1);

Chargement de toutes les instances de person :

let persons = this.get('store').findAll('person');

Retour des instances de person déjà chargée dans le store :

let persons = this.get('store').peekAll('person');

De plusieurs enregistrements

this.get('store').query('person', {
  filter: {
    name: 'Peter'
  }
}).then(function(peters) {
  // Do something with `peters`
});

D'un seul enregistrement

this.get('store').queryRecord('person', {
  filter: {
    id: 1234
  }
}).then(function(user) {
  // Do something with `user`
});

Toutes les opérations de modification (ajout, modification, suppression) fonctionnent en 2 étapes :

  • Réalisation de la modification (appel de createRecord, deleteRecord, updateRecord…)
  • Mise à jour sur le serveur (save)

Création d'une instance

let post = store.createRecord('post', {
  title: 'Rails is Omakase',
  body: 'Lorem ipsum'
});

Mise à jour de la création (persistance) :

post.save();

Toutes les méthodes du store interrogeant le serveur (find, findAll, query, save…) retournent une “promise” permettant d'intercepter la fin du chargement, ou les erreurs éventuelles.

let persons=this.get('store').findAll('person').then(function(datas){
    //les données datas sont chargées
    }).catch(function(reason){
    //Erreurs de chargement
    });

let post = store.createRecord('post', {
  title: 'Rails is Omakase',
  body: 'Lorem ipsum'
});

let self = this;

function transitionToPost(post) {
  self.transitionToRoute('posts.show', post);
}

function failure(reason) {
  // handle the error
}

post.save().then(transitionToPost).catch(failure);

  • richclient/emberjs/data/crud.1517764263.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)