2017-09-28 4 views
1

J'ai mis en place un Ember Twiddle simple pour vous montrer mon erreur qui se produit en essayant de mettre à jour un modèle. Il est important que j'utilise ember-cli-mirage pour se moquer des données. Selon les docs, j'ai créé une route sténographique qui devrait gérer la requête PUT. Il fait, mais avec l'erreur: Your handler for the url /api/shops/1 threw an error: Cannot convert undefined or null to objectVous ne pouvez pas utiliser des gestionnaires d'itinéraire raccourcis si RestSerializer est utilisé? (ember-cli-mirage)

Lorsque vous utilisez le JSONAPISerializer, tout fonctionne avec sténographies (mirage/config.js) et je suis en mesure de mettre à jour les modèles, mais dans mon cas, je dois utiliser le RESTSerializer avec ID sérialisés dans les réponses. La charge utile de demande quand j'envoie attrs de modèle sont sans Id à la fin du nom de la propriété, fe:

// attrs object in PUT request { name: "Shop 1", city: "1" // belongsTo relationship, }

maintenant Mirage tente de trouver ces propriétés sur le modèle de base de données respectif qui doit être mis à jour, mais ne peut pas le trouver, parce que dans la base de données, il est cityId et pas seulement city ...

J'ai aussi trouvé ce issue report et cela fonctionne, mais j'espérais que je pouvais éviter quelque chose comme ça. Aussi loin que je me souvienne, dans les versions précédentes de ember-cli-mirage (v0.1.x), il n'était pas nécessaire de surcharger la méthode normalize dans le sérialiseur pour pouvoir utiliser RestSerializer avec serializedIds ...

Ma question est: Existe-t-il un moyen de coller uniquement aux gestionnaires de routines, ou dois-je vraiment écrire une aide ou une autre solution personnalisée uniquement parce que je dois utiliser RestSerializer? Ce serait vraiment triste, mais au moins je le saurais alors.

Nous vous remercions de votre soutien!

+0

Je ne connais pas la réponse, mais vous voudrez peut-être noter la version de mirage que vous voulez utiliser. – AlexMA

+0

Je veux utiliser une version qui contient le support pour les usines et la détection automatique de modèle. Mais quand j'ai essayé la première version qui contenait ces deux caractéristiques, elle se comportait aussi comme je l'ai décrit ci-dessus. –

Répondre

0

Réponse courte: il semble que vous ayez besoin du sérialiseur personnalisé pour le moment, jusqu'à ce que le correctif d'erreur soit fusionné. Réponse longue: ce problème semble provenir de la mise à niveau 0.2 -> 0.3 pour Mirage, probablement en raison de modifications de base de données sous-jacentes effectuées dans Mirage. Cela va probablement être réparé, mais pour l'instant vous devrez le contourner.