2017-07-18 4 views
0

J'ai un serveur API qui a une liste différente selon que ce soit en tirant tous les utilisateurs ou un seul utilisateur, par exemple:Comment définir le modèle pour les associations appliquées uniquement dans la vue d'un seul élément?

GET /users/ retourne:

id: 1 
name: Name One 
username: nameone 

id: 2 
name: Name Two 
username: nametwo 

GET /users/1 retourne:

id: 1 
name: Name One 
username: nameone 
location: Street 1, City One 
devices: [device1, device2] 

Qu'est-ce qui se passe dans la liste des utilisateurs uniques est que les associations sont faites, à savoir ma table user a seulement id, name, et username, tandis que location et devices sont des tables distinctes qui ont une colonne user_id ».

Comment définir un modèle comme celui-ci dans Ember? Est-ce que je définis tous les champs et les laisse vides pour la liste complète? Ou ai-je besoin de changer mon serveur API backend afin de l'adapter à la façon dont fonctionne Ember (pas idéal)? Idéalement, je veux que mon modèle Ember soit conforme aux données que je tire du serveur de l'API, plutôt qu'à ce qu'il y a dans la base de données, si cela a du sens.

Merci pour votre temps!

Répondre

1

Vous devez toujours inclure la même charge utile pour chaque utilisateur (inclure les périphériques [ou uniquement ses identifiants] dans/users et/endpoints utilisateur).

Imaginez d'abord obtenir une réponse de USER_1 de la part de/users (incomplet - sans périphérique), puis accédez à/users/1. Les données Ember seront déjà chargées par USER_1, il ne fera donc aucune demande à votre API. USER_1 sera considéré comme déjà entièrement chargé. Ce serait un désordre de vérifier quels enregistrements sont partiellement chargés (et les recharger), et qui sont entièrement chargés.

À moins d'avoir des centaines de périphériques pour chaque utilisateur ou plus, vous ne devriez pas vous soucier autant des performances. Si tel était le cas, pourquoi n'avez-vous pas inclus les appareils pour/utilisateurs.

Si vous voulez vraiment inclure une petite charge utile pour/les utilisateurs, vous pouvez envoyer uniquement des ID pour les périphériques. De cette façon, les données Ember chargeraient les appareils paresseux seulement quand ils sont nécessaires.

+0

Merci pour les commentaires, et si un utilisateur a 100s de dispositifs? Après une conversation sur le canal Slack, il semble que je puisse utiliser le paramètre "inclus" fourni par l'API JSON, et je devrai l'implémenter sur mon serveur API (auquel cas je n'ai pas besoin de changer mon modèle sur Ember , mais juste pour spécifier ses associations). Je suppose que cela pourrait combler la tension entre le client et le serveur. – finferflu

+1

Ouais, bien sûr, vous pouvez essayer cela si cela fonctionne pour vous. :) –