2016-03-30 1 views
0

J'ai des données de journal que je souhaite gérer avec js-data (http://www.js-data.io/docs/dsdefaults#idattribute) qui n'a pas de clé primaire.Est-ce que [js-data] ne supporte aucune clé primaire?

Ai-je besoin de générer une clé ou est-ce que js-data peut être configuré pour permettre l'accès aux données sans pk? Puis-je obtenir js-data pour générer un pk? Je n'ai pas besoin de persister ces données, je voulais juste utiliser les capacités de js-data pour l'interroger.

Exemple:

$provide.factory('syslog', ['DS', function(DS) { 
    return DS.defineResource({ 
     name: 'log' 
    }); 
    }]); 

    $provide.factory('LoggingServices', ['$q', '$filter', '$log', 'syslog', function($q, $filter, $log, syslog) { 

    function injectMockLogs() { 
     syslog.inject({ 
     'messages': [ 
      { 
      'time':'2016-03-29 09:32:43', 
      'severity':'INFO', 
      'user':'carolyn', 
      'auth_type':'RADIUS', 
      'method':'UI', 
      'event_id':1107, 
      'message':'In make_radius_request: Making radius request for user carolyn', 
      'full_message':'2016-03-29 09:32:44 "info" ns [1107]: RADIUS auth:In continue_radius_auth: Starting RADIUS authentication for user carolyn @ 10.217.22.20' 
      },{ 
      'time':'2016-03-29 09:32:44', 
      'severity':'INFO', 
      'user':'carolyn', 
      'auth_type':'RADIUS', 
      'method':'UI', 
      'event_id':1107, 
      'message':'In make_radius_request: Making radius request for user carolyn', 
      'full_message':'2016-03-29 09:32:44 "info" ns [1107]: RADIUS auth:In make_radius_request: Making radius request for user carolyn' 
      },{... 
+0

Mon travail actuel consiste à générer un identifiant avant d'injecter les données. Mais je ne me soucie pas vraiment de ou besoin d'un identifiant. – tarik

Répondre

1

Pour que les données à injecter dans le magasin (qui est une carte d'identité), les données doivent avoir une sorte d'identifiant unique. C'est correct si vous n'avez pas besoin des éléments pour avoir une clé primaire, mais c'est nécessaire pour JSData. À compter de la version 2.9.0, le passage de l'option temporary: true à inject entraînera la génération d'un identifiant pour chacun des éléments à injecter, bien que votre solution de contournement actuelle soit une bonne approche.

+0

Le 'temporary: true' est exactement le genre de chose que je cherche .. il réduit le bouclage des données d'un seul passage. Je comprends pourquoi les clés sont nécessaires, mais le traitement des données du journal n'est pas rare, ce qui rend cette fonction très pratique. J'utilise js-data pour gérer les données et effectuer des requêtes. Il nécessite un peu moins de codage manuel et est agréable à utiliser. Merci! – tarik

+0

En guise de suivi, il s'avère que les agrégateurs que nous utilisons pour m'envoyer les données de journal appliquent des clés aux données. – tarik