Domanda

Sto usando JavaScript lato server - Sì, sono in realtà utilizzando Server Side JavaScript. Per complexify le cose ancora di più, io uso Oracle come database di backend (10g). Con un po 'pazzo e XSLT simile mutante HTML generazione, posso costruire davvero moduli web di fantasia - sì, sono consapevole di Rails e altri similmente quadri e ho scelto il percorso di orrore, invece. Non ho JQuery o altro quadro di fantasia a mia disposizione, solo pianura ol' JavaScript che dovrebbe essere supportato dal motore sottostante chiamato Mozilla Rhino. Sì, è folle e mi piace.

Quindi, ho un sacco di tavoli a mia disposizione e alcuni di loro sono pieni di chiavi associative che puntano a valori. Come io sono un pleaser persone, voglio aggiungere alcune soluzioni ingegnose dall'utente preferenze guidati.

I miei utenti hanno tutti un unico user_id e questo user_id è disponibile durante l'intera sessione.

La mia idea iniziale è quella di avere una tabella di preferenze dell'utente, dove ho "tre" colonne: user_id, funzionalità e pref_string. Utilizzando un delimitatore, ad esempio: oppure - (non hanno pensato ancora un tipo adatto), ho potuto avere memorizzare un mazzo di preferenze come lista e memorizzare gli elementi all'interno di un array utilizzando il metodo .split-(simile come il PHP funzione -explode). La colonna caratteristica potrebbe essere come il nome della tabella o qualche identificatore per la "caratteristica" Voglio Preferenze del collegamento troppo. Odio gli oggetti hardcoding, soprattutto perché voglio essere in grado di eseguire questi e riutilizzare questa funzionalità a livello di applicazione. Naturalmente mi piacerebbe idee migliori, basta tenere a mente non posso aggiungere una libreria così facilmente.

Queste preferenze potrebbe essere come "unito" al tavolo, in modo da poter interrogare e usare i suoi valori.

Spero che non sembra troppo complesso, perché bene .. il suo fondamentalmente qualcosa di veramente semplice che ho bisogno.

Grazie!

Modifica

Diciamo che voglio compilare una casella a discesa, che ha attualmente 10 valori dinamici. Vorrei ottenere questi dal database utilizzando una semplice dichiarazione prescelta:

SELECT pet, value FROM pets

Si restituirebbe una tabella come la seguente:

dog  1
cat  2
fish 3

vorrei entrare in questo all'interno di una casella a discesa. Tuttavia, se potessi piacerebbe avere preferenze aggiunte al quel tavolo, come user_id 100 vedrebbe solo mammiferi (cane, gatto) e ID_utente 200 vedrebbe solo le creature del mare (pesce). Ora immaginate che la tabella ha tutte le creature del mondo e ho un sacco di tavoli che richiederebbero tali preferenze.

Dato che posso avere un numero illimitato di utenti, avrei dovuto applicare una qualche forma di meta-dati. Soluzioni per fare questo, è quello che sto cercando.

È stato utile?

Soluzione

Questo suona come non ha nulla a che fare con JavaScript sul lato server (che non che è una scelta folle) o la vostra mancanza di un quadro (che do che sia un po 'pazzo). Si tratta di database e la struttura della tabella al suo cuore.

Come classificare un elenco di valori da una tabella è a voi a seconda delle circostanze. Ad esempio, si può avere una tabella ANIMALI, che ha i dati, come si descrive. Quindi, si può avere un tavolo PET_ATTRIBUTE_LIST, che avrebbe dati che ANIMALI può possedere. Infine, si potrebbe avere un tavolo PET_ATTRIBUTE che collega questi due. In questo modo gli attributi (pesci, mammiferi, vertebrati, ecc) sono in una tabella, gli animali domestici (cani, gatti, beta, ecc) in un altro, e poi un insieme arbitrario di attributi possono essere collegati a un animale domestico.

Per la questione di utenti opzioni che sono importanti per loro vedendo solo, si avrebbe un tavolo USER_PET_ATTRIBUTE collega record tra gli utenti azienda tabella e il vostro tavolo PET_ATTRIBUTE_LIST.

Ci sono un sacco di molti-a-molti che utilizzano questo metodo, ma è probabilmente il più flessibile.

Altri suggerimenti

Penso che si dovrebbe riconsiderare il tuo punto di "non usare un quadro". Helma / Ringo è un framework javascript maturare e pronto per la produzione lato server sulla base di Rhino. Un livello di astrazione mappe oggetti JavaScript a un database relazionale (JDBC collegato), così come già fornisce metodi semplici per gli oggetti utente e preferenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top