web-dev-qa-db-fra.com

Backbone.js Traitement des erreurs - Comment faites-vous?

Je me demande comment les gens font généralement des erreurs de manipulation avec la colonne vertébrale. Ce serait bien pour quelque chose à contempler à chaque fois que j'appelle Model.save (qui appelle à son tour Backbone.Sync). La chose est la suivante: Comment Backbone.js sait-elle quand une erreur ou un succès s'est produite sur le serveur? Je comprends que cela saurait s'il y avait une erreur de serveur de 500 serveur ou quelque chose comme ça (que JQuery sait sur le point de backbone.sync appelle jquery.ajax) - mais je veux pouvoir passer des messages et d'autres codes afin que je puisse donner une erreur plus significative messages à l'utilisateur.

J'ai une idée et j'aimerais des commentaires. L'idée est de remplacer Backbone.Sync. La nouvelle synchronisation reçoit une réponse du serveur, qui doit être dans un format particulier. Ce format serait quelque chose comme:

ServerResponseObject:
  > ResponseCode
  > Message
  > Model

Rien de fantaisie, mais fondamentalement, au lieu de simplement retourner le modèle simple, il est enveloppé avec un ResponseCode et Message qui peut être montré à l'utilisateur.

Est-ce la façon normale de le faire? Toute autre approche meilleure?

Merci!

36
Nick Lang

Dans mes oreilles, cela sonne un peu du côté complexe, au moins pour commencer avec. Backbone.sync Signalera déjà des erreurs que vous pouvez attraper dans vos modèles .save() Méthode:

this.mymodel.save(/* ... */, {success: function(model, result, xhr)...,
                              error: function(model, xhr, options)...}

( docs ).

Si votre Serveride suit HTTP - spécifications Eh bien, le code d'erreur est déjà fourni (500 - erreur de serveur, 404 - modèle non trouvé, vous savez ..), et même si le serveur envoie un code d'erreur, il peut toujours envoyer du contenu (parfait pour votre message). Vous avez donc essentiellement tous les paramètres intégrés au protocole HTTP lui-même. Dans mon expérience, vous obtenez d'écrire moins de code si vous travaillez avec le protocole au lieu de construire de nouvelles couches en dessus.

Dans votre errorCallback ci-dessus, vous avez probablement de bonnes possibilités d'appeler le reste de votre système et de poster une erreur sur un bus de messagerie d'application ou similaire (via le mécanisme d'événement de votre propre éventail ou certains dédié - Bibliothèque ).

31
Jacob Oscarson