Pregunta

Estoy usando JavaScript del lado del servidor, sí, en realidad estoy usando JavaScript del lado del servidor. Para complejar las cosas aún más, uso Oracle como una base de datos de backend (10g). Con un poco de XSLT loco y una generación HTML tipo mutante, puedo construir formas web realmente elegantes; sí, soy consciente de los rieles y otros marcos igualmente y elijo el camino del horror. No tengo jQuery u otro marco elegante a mi disposición, simplemente JavaScript que debería ser compatible con el motor subyacente llamado Mozilla Rhino. Sí, es una locura y me encanta.

Entonces, tengo un montón de tablas a mi disposición y algunas de ellas están llenas de claves asociativas que se vinculan a los valores. Como soy un placer para personas, quiero agregar algunas soluciones ingeniosas impulsadas por preferencias de usuarios.

Mis usuarios tienen todo un User_ID único y este User_ID está disponible durante toda la sesión.

Mi idea inicial es tener una tabla de preferencias de usuario, donde tengo columnas "tres": user_id, característica y pref_string. Usando un delimitador, como: o - (todavía no he pensado en uno adecuado), me gustaría almacenar un montón de preferencias como lista y almacenar sus elementos dentro de una matriz usando el método .split (similar al PHP -soprode la función). La columna de características podría ser como el nombre de la tabla o algún identificador para la "función" que también quiero vincular las preferencias. Odio los objetos de codificación, especialmente porque quiero poder respaldarlos y reutilizar esta funcionalidad en toda la aplicación. Por supuesto, me encantaría mejores ideas, solo tenga en cuenta que no puedo agregar una biblioteca tan fácilmente.

Estas preferencias podrían ser como "unidas" a la tabla, por lo que puedo consultarla y usar sus valores.

Espero que no suene demasiado complejo, porque bueno ... es básicamente algo realmente simple que necesito.

¡Gracias!

EDITAR

Digamos que quiero completar un cuadro desplegable, que actualmente tiene 10 valores dinámicos. Los obtendría de la base de datos utilizando una instrucción SELECT simple:

SELECT pet, value FROM pets

Devolvería una mesa como la siguiente:

dog  1
cat  2
fish 3

Entraría en esto dentro de un cuadro desplegable. Sin embargo, si me gustaría tener preferencias agregadas a esa tabla, como User_ID 100 solo vería mamíferos (perro, gato) y user_id 200 verían solo criaturas marinas (peces). Ahora imagine que la mesa tiene todas las criaturas del mundo y yo tenemos muchas tablas que requerirían tales preferencias.

Como puedo tener usuarios ilimitados, tendría que aplicar alguna forma de metadatos. Las soluciones para hacer esto, es lo que estoy buscando.

¿Fue útil?

Solución

Esto parece que no tiene nada que ver con JavaScript del lado del servidor (que yo no pensar es una elección loca) o tu falta de un marco (que yo hacer creo que es un poco loco). Esta es la base de datos y el diseño de la tabla en su corazón.

La forma en que clasifica una lista de valores de una tabla depende de usted dependiendo de las circunstancias. Por ejemplo, puede tener una tabla de mascotas que tiene los datos como describe. Luego, puede tener una tabla pet_attribute_list, que tendría datos que las mascotas pueden poseer. Finalmente, podría tener una tabla PET_Attribute que vincule estos dos. De esa manera, los atributos (peces, mamíferos, vertebrados, etc.) están en una mesa, las mascotas (perro, gato, beta, etc.) en otro, y luego un conjunto arbitrario de atributos puede vincularse a una mascota.

Para la cuestión de los usuarios que solo vean opciones que son importantes para ellos, tendrá una tabla user_pet_attribute que vincula los registros entre su tabla que contiene usuarios y su tabla PET_ATTRIBUTE_LIST.

Hay muchas de las relaciones de muchos a muchos utilizando este método, pero es probablemente la más flexible.

Otros consejos

Creo que deberías reconsiderar tu punto de "no usar un marco". Helma/Ringo es un marco JavaScript maduro y listo para la producción basado en Rhino. Una capa de abstracción mapea los objetos de JavaScript a una base de datos relacional (JDBC Connected), así como ya proporciona métodos fáciles para objetos y preferencias de usuario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top