Validazione dei codici di transazione con i codici di riferimento ... Il modo migliore per codificare le regole di convalida?

1

Ho una serie di codici di riferimento che i miei utenti finali creano durante il corso della giornata. Questi codici di riferimento corrispondono a un codice transazione memorizzato in un database. A partire da ora, ci sono 15 codici di transazione differenza.

Ecco un esempio:

Tranasction Code - Reference Code
BB01             - 48912388
C949             - X717-9999

e così via ...

Nuovi codici transazione possono essere aggiunti in qualsiasi momento. Se il codice della transazione è nuovo o no, tutti i codici di riferimento corrispondenti devono essere in un determinato formato. Pianifico di utilizzare espressioni regolari per convalidare i codici di riferimento utilizzando Javascript.

Ora ecco la domanda.

  1. Sto meglio facendo qualcosa del genere

    var transactionCode = $('input[name=TransactionCode]').val();
    var referenceCode = $('input[name=ReferenceCode]').val();
    
    // Do this type of test for all 15 types of reference codes until I
    // succeed
    if (transactionCode === 'BB01') {
        var results = /\d{8}/.test(referenceCode);
        // if results is true, blah blah blah
    }
    
  2. Crea una tabella SQL di codici di riferimento e corrispondenti regex. Esegui una query sul database e costruisci un oggetto javascript (simile a un dizionario / hash di coppie di valori chiave) quando necessario, dove passo il codice di riferimento come chiave per recuperare la regex da convalidare con il mio codice di transazione.

Il secondo approccio sembra eccessivo per un piccolo set di dati. Ma il vantaggio è che non devo codificare i miei codici di transazione durante i test e quando vengono aggiunti o rimossi altri codici, non devo doverli manualmente in JavaScript. Dove come se fossi il primo approccio, devo codificare i miei codici di transazione. Non solo, ma se il codice della transazione dovesse mai cambiare, allora devo cambiare il javascript.

Volevo ottenere il feedback di qualcuno su questo approccio o un'altra alternativa se mi manca qualcosa.

    
posta coson 29.04.2016 - 00:02
fonte

2 risposte

1

Se carichi la regex dal database ottieni una soluzione molto più dinamica, che tendo a piacere.

Se al momento non si desidera creare la complessità, è possibile iniziare con alcuni schemi codificati e quindi eseguire il refactoring in una soluzione basata su db.

Tuttavia sono un po 'preoccupato per la tua convalida in javascript. La convalida lato client è solo per un rapido riscontro da parte dell'utente. La convalida finale deve essere eseguita sul lato server prima che le informazioni vengano mantenute. È troppo facile bypassare javascript se lo si desidera.

    
risposta data 29.04.2016 - 00:18
fonte
-1

In questo caso vorrei

  • memorizza l'hashmap dei codici e delle espressioni sul server nella cache, dove li stai già utilizzando per altre convalide.

  • aggiungi una scadenza della cache a quella chiamata Web e quindi dal lato client usa solo il risultato hashmap del server in un ciclo for per la convalida del client rapido.

  • restituisce l'intero set di hash e li memorizza per un po 'di tempo x sul client. In questo modo i controlli rimangono sincronizzati automaticamente e le modifiche devono essere apportate solo in un unico posto.

Se le cose iniziano a crescere o diventano più complesse nelle regole intorno ai codici e alle espressioni che sarebbero candidate a quel punto per passare a un db di alcuni tipi

    
risposta data 29.05.2016 - 15:42
fonte

Leggi altre domande sui tag