Question

J'utilise JavaScript côté serveur - oui, j'utilise en fait le serveur Side JavaScript. Pour complexifier les choses encore plus, j'utilise Oracle comme base de données back-end (10g). Avec un peu fou XSLT et génération de mutants comme HTML, je peux vraiment construire des formulaires Web de fantaisie - Oui, je suis conscient de Rails et d'autres cadres et je De même choisis plutôt le chemin d'horreur. Je n'ai pas JQuery ou tout autre cadre de fantaisie à ma disposition, juste plaine ol » JavaScript qui doit être pris en charge par le moteur sous-jacent appelé Mozilla Rhino. Oui, il est fou et je l'aime.

Alors, j'ai un tas de tables à ma disposition et certains d'entre eux sont remplis avec des clés associatives qui pointent vers des valeurs. Comme je suis un plaisir pour les gens, je veux ajouter quelques astucieuses utilisateur préférence solutions tournées vers.

Mes utilisateurs ont tous un user_id unique et ce user_id est disponible pendant toute la session.

Mon idée de départ est d'avoir une table de préférences de l'utilisateur, où j'ai « trois » colonnes: user_id, fonctionnalité et pref_string. L'utilisation d'un séparateur, tels que: ou - (n'ont pas pensé à un convenable encore), je pouvais stocker comme un tas de préférences en tant que liste et stocker ses éléments dans un tableau en utilisant la méthode .split (similaire comme le PHP fonction -explode). La colonne de fonction pourrait être comme le nom de la table ou un identifiant pour la « fonction » je veux aussi les préférences de lien. Je déteste les objets Hardcoder, d'autant plus que je veux être en mesure de sauvegarder et de réutiliser ces jusqu'à cette fonctionnalité application large. Bien sûr, j'aimerais de meilleures idées, juste garder à l'esprit que je ne peux pas simplement ajouter une bibliothèque facilement.

Ces préférences pourraient être comme « joint » à la table, donc je peux interroger et utiliser ses valeurs.

J'espère que cela ne semble pas trop complexe, car bien .. je besoin de son fond quelque chose de vraiment simple.

Merci!

EDIT

Disons que je veux remplir une liste déroulante, qui a actuellement 10 valeurs dynamiques. J'obtenir ces de la base de données à l'aide d'une simple instruction select:

SELECT pet, value FROM pets

Il renvoie une table comme suit:

dog  1
cat  2
fish 3

J'entrer dans ce dans une liste déroulante. Cependant, si je pouvais vous ont des préférences ajoutées à cette table, comme user_id 100 ne verrait mammifères (chien, chat) et id_utilisateur 200 verrait que des créatures de la mer (poissons). Maintenant, imaginez que la table a toutes les créatures du monde et j'ai beaucoup de tables qui nécessiteraient de telles préférences.

Depuis que je peux avoir des utilisateurs illimités, je devrais appliquer une certaine forme de méta-données. Des solutions pour ce faire, est ce que je cherche.

Était-ce utile?

La solution

Cela sonne comme il n'a rien à voir avec JavaScript côté serveur (que je ne pas pense est un choix fou) ou votre manque d'un cadre (que je faire pense est un peu fou). Cette base de données est et la conception de la table à son coeur.

Comment vous classez une liste de valeurs d'une table est à vous en fonction des circonstances. Par exemple, vous pouvez avoir une table PETS qui a les données que vous décrivez. Ensuite, vous pouvez avoir une table PET_ATTRIBUTE_LIST, ce qui aurait des données PETS possédiez. Enfin, vous pourriez avoir une table PET_ATTRIBUTE qui relie ces deux. De cette façon, les attributs (poissons, mammifères, vertébrés, etc.) sont dans une table, les animaux de compagnie (chien, chat, bêta, etc.) dans un autre, puis un ensemble arbitraire d'attributs peut être lié à un animal de compagnie.

Pour la question des utilisateurs ne voir que les options qui sont importantes pour eux, vous auriez une table de USER_PET_ATTRIBUTE relier les dossiers entre vos utilisateurs de maintien de table et votre table de PET_ATTRIBUTE_LIST.

Il y a beaucoup de nombreux à plusieurs relations en utilisant cette méthode, mais il est probablement le plus flexible.

Autres conseils

Je pense que vous devriez revoir votre point de « ne pas utiliser un cadre ». Helma / Ringo est un framework JavaScript côté serveur prêt à la production et la maturité basée sur Rhino. Une couche d'abstraction cartes objets javascript à une base de données relationnelle (reliée jdbc), ainsi que fournit déjà des méthodes faciles pour les objets utilisateur et les préférences.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top