2017-10-10 4 views
0

Je veux initialiser mon modèle de marché en chargeant depuis mon backend de rails. J'ai également une connexion websocket qui fournit des données en temps réel pour garder le modèle mis à jour.Ember.js - Différents sérialiseurs pour le même modèle (rails backend et mises à jour websocket)

Comment puis-je sérialiser les données de la socket Web sans sérialiser également la demande d'initialisation de l'API rails? Le sérialiseur est attaché au modèle, donc je ne sais pas comment il peut être séparé.

L'autre problème est que les mises à jour websocket ne vont pas avoir une clé primaire à mettre à jour avec pushPayload(). Le nom du marché (comme dans USDCAD ci-dessous) sera unique cependant. Comment puis-je gérer cela?

exemple Websocket mise à jour:

{ 
    "platform": "trader-platform", 
    "updateType": "summaryUpdate", 
    "USDCAD": { 
    "high": 234, 
    "low": 143, 
    "last": 200 
    } 
} 
+0

En fait, le nom de marché ne peut pas être la clé primaire, car une plate-forme différente peut également avoir le même nom de marché. Je suppose que cela signifie rechercher chaque identifiant avant la mise à jour. –

Répondre

0
  • Tout d'abord, vous devez trouver le bon enregistrement afin d'obtenir l'ID. Sans ID , il est impossible de stocker des données dans un magasin.
  • Ensuite, attribuez l'ID à votre charge utile.
  • Ensuite, si le paylod doit être sérialisé, utilisez store.pushPayload (modelName, payload), sinon formatez votre charge utile vers un document JSONApi et utilisez store.push (jsonapidoc).