Frage

Ich verwende Server -Seite JavaScript - Ja, ich verwende tatsächlich Server -Seite JavaScript. Um die Dinge noch mehr zu komplexieren, verwende ich Oracle als Backend -Datenbank (10G). Mit einigen verrückten XSLT und mutierten -ähnlichen HTML -Generation kann ich wirklich ausgefallene Webformen erstellen - ja, ich bin mir der Schienen und anderen Rahmenbedingungen bewusst und wähle stattdessen den Weg des Horrors. Ich habe kein JQuery oder ein anderes ausgefallenes Gerüst zur Verfügung, nur um JavaScript, der von dem zugrunde liegenden Motor namens Mozilla Rhino unterstützt werden sollte. Ja, es ist verrückt und ich liebe es.

Ich habe also eine Reihe von Tischen zur Verfügung, und einige von ihnen sind mit assoziativen Schlüssel gefüllt, die mit Werten verknüpfen. Da ich ein People Pleaser bin, möchte ich einige raffinierte, von Benutzer vorgezogene Lösungen hinzufügen.

Meine Benutzer haben alle ein eindeutiges User_id und diese user_id ist während der gesamten Sitzung verfügbar.

Meine erste Idee ist es, eine Benutzerpräferenztabelle zu haben, in der ich "drei" Spalten habe: User_id, Funktion und Pref_String. Mit einem Trennzeichen, wie z. -explodische Funktion). Die Feature -Spalte kann dem Tabellennamen oder einer Kennung für die "Funktion", die ich auch den Einstellungen verlinken möchte, aussehen. Ich hasse Hardcoding-Objekte, zumal ich in der Lage sein möchte, diese zu unterstützen und diese Funktionalitätsanwendungsweite wiederverwenden zu können. Natürlich würde ich bessere Ideen lieben, denken Sie daran, ich kann nicht einfach eine Bibliothek so leicht hinzufügen.

Diese Einstellungen könnten wie "mitgefügt" sein, sodass ich sie abfragen und ihre Werte verwenden kann.

Ich hoffe, es klingt nicht zu komplex, weil es im Grunde etwas wirklich Einfaches ist, das ich brauche.

Vielen Dank!

BEARBEITEN

Nehmen wir an, ich möchte ein Dropdown -Feld ausfüllen, das derzeit 10 dynamische Werte enthält. Ich würde diese mit einer einfachen Auswahlanweisung aus der Datenbank erhalten:

SELECT pet, value FROM pets

Es würde eine Tabelle wie folgt zurückgeben:

dog  1
cat  2
fish 3

Ich würde dies in einem Dropdown -Feld eingeben. Wenn ich jedoch in dieser Tabelle Einstellungen zugefügt habe, würde wie User_id 100 nur Säugetiere (Hund, Cat) und User_id 200 nur sehen, wie nur Meereskreaturen (Fische) sehen. Stellen Sie sich nun vor, der Tisch hat alle Kreaturen der Welt und ich habe viele Tische, die solche Vorlieben erfordern würden.

Da ich unbegrenzte Benutzer haben kann, müsste ich irgendeine Form von Meta-Daten anwenden. Lösungen dafür sind das, wonach ich suche.

War es hilfreich?

Lösung

Dies klingt so, als hätte es nichts mit serverseitigem JavaScript (was ich nicht Denken Sie, ist eine verrückte Wahl) oder Ihr Fehlen eines Rahmens (den ich tun Ich denke, es ist ein bisschen verrückt). Dies ist Datenbank- und Tabellendesign in seinem Herzen.

Wie Sie eine Liste von Werten aus einer Tabelle kategorisieren, liegt Sie je nach den Umständen. Zum Beispiel haben Sie möglicherweise eine PETSS -Tabelle, in der die Daten wie Sie beschrieben sind. Anschließend haben Sie möglicherweise eine Tabelle PET_ATTRIBUTE_LIST, die Daten enthält, die PETs besitzen können. Schließlich könnten Sie eine PET_ATTRIBUTE -Tabelle haben, die diese beiden verknüpft. Auf diese Weise befinden sich die Attribute (Fische, Säugetier, Wirbeltier usw.) in einer Tabelle, die Haustiere (Hund, Katze, Beta usw.) in einer anderen und dann können ein willkürlicher Satz von Attributen mit einem Haustier verknüpft werden.

Für Benutzer, die nur Optionen sehen, die für sie wichtig sind, hätten Sie eine Tabelle user_pet_attribute, die Datensätze zwischen Ihrer Tabelle mit den Benutzern und Ihrer Tabelle PET_ATTRIBUTE_LIST verknüpfen.

Es gibt viele der vielen zu viele Beziehungen mit dieser Methode, aber sie ist wahrscheinlich die flexibelste.

Andere Tipps

Ich denke, Sie sollten Ihren Standpunkt "kein Framework verwenden" überdenken. Helma/Ringo ist ein ausgereiftes und produktionsbereites serverseitiges JavaScript-Framework, das auf Rhino basiert. Eine Abstraktionsschicht bildet JavaScript -Objekte in eine relationale Datenbank (JDBC Connected) und bietet bereits einfache Methoden für Benutzerobjekte und -präferenzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top