Les meilleures pratiques pour la sauvegarde d'un ensemble de la collection?
Dire que j'ai une Collection et j'ai apporté des modifications à la plupart de ses Modèles. Quel est le meilleur moyen pour enregistrer toutes les modifications à l'aide d'une seule requête HTTP?
- l'ajout d'un nouveau RESTE des ressources de quelque chose comme ModelsArray
Vous devez vous connecter pour publier un commentaire.
Général RESTE backends poignée de seule instance de création/mise à jour. Vous auriez besoin de les changer que d'accepter un tableau d'objets.
Cela dit, sur le côté client, vous devez aller directement à la colonne vertébrale.la fonction de synchronisation
Dans ce cas, votre modèle doit être un tableau de modèle. La méthode doit être "créer" ou "enregistrer" et les options prennent le même type d'options comme un appel ajax jQuery (erreur, succès, etc.)
Je vais faire quelque Chose de Mal ici, et de citer Wikipédia concernant bon Reposant pratiques: un METTRE à
example.com/resources
devrait remplacer l'ensemble de la collection, avec une autre collection. Sur cette base, quand nous avons eu à soutenir l'édition de plusieurs éléments en même temps, nous avons écrit jusqu'à présent contrat.{"resources": [{resource1},{resource2}]}
{"resources": [{"id":1,...},{"id":2,...}]}
Nous avons écrit le serveur de la moitié du contrat dans les Rails, mais ici, c'est le client de moitié (en CoffeeScript, désolé!):
Je pensais que c'était un beaucoup plus facile à mettre en œuvre puis en substituant de la colonne vertébrale.la synchronisation. Un commentaire sur le code, nos collections ont toujours été des objets enfants, ce qui doit expliquer pourquoi le code définit une "parent_id" chaque fois qu'un objet est ajouté à la collection, et comment la racine de l'URL est le parent de l'URL. Si vous avez au niveau de la racine des collections que vous souhaitez modifier, puis il suffit de retirer le
@parent
d'affaires.Uncaught TypeError: Property 'url' of object [object Object] is not a function
sur le@url()
appel. Référencement comme une propriété au lieu d'une fonction fixe que pour moi:@url
url
peut être une propriété ou une méthode, de sorte que vous voulez les utiliser celui qui est approprié pour vous.Backbone.sync('update', new MyWrapperModel({ mythings: this.models })
Vous devez étendre
Backbone.Collection
, lui donnant unsave()
méthode qui permettrait de contrôler chacun de ses modèleshasChanged()
.Alors il devrait appeler
Backbone.sync
, qui vous aurez probablement à étendre un peu dans une coutume de la fonction de synchronisation. Si vous utilisez une coutumeBackbone.sync
fonction, alors assurez-vous de le mettre sur votre collection.Une approche différente (à l'aide d'un modèle pour représenter la collection) est ici: "Comment" pour enregistrer l'intégralité de la collection en Backbone.js - Dorsale.sync ou jQuery.ajax?
J'aime aussi https://stackoverflow.com/a/7986982/137067
Ce code ajoute une nouvelle méthode pour la collecte prototype juste à appeler la méthode save de ces modèles, qui avait changé. Il a travaillé pour moi:
Gist lien: https://gist.github.com/julianitor/701c677279bac1529b88