Fictizia / Curso-JS-para-desarrolladores-web_ed2

FICTIZIA » Curso de JavaScript para desarrolladores web — 2ª Edición
7 stars 11 forks source link

Creación de una estructura para el firebase #1

Open JoseMariaRubioMoral opened 9 years ago

JoseMariaRubioMoral commented 9 years ago

Hola Álvaro, voy a probar esto para hacer mis preguntas.

Estoy con el tema de la creación de estructura para el firebase y poder hacer consultas de una forma más o menos óptima. Mi problema es que como no veo muchos ejemplos en la documentación no sé cómo seguir y me preguntaba si me podrías echar una mano, o alguien del grupo.

Mi Aplicación dentro de una base normal de datos tendría

1 tabla: Ingredientes: ---- Nombre ingrediente

1 tabla: Categoría: ---- Nombre de la categoría del plato [1er plato, segundo, postre...]

1 tabla recetas: ---- Nombre de la receta ---- Autor o origen de la receta ---- Vegetariano o no ---- Tiempo de preparación ---- Comensales para la receta ---- Pasos para realizar la receta ---- Comentarios a la receta //del autor, no quiero hacer una comunidad detrás de esta aplcación

1 tabla relaciónIngredientesConReceta ---- Id del ingrediente ---- id de la receta ---- Cantidad ---- tipo de cantidad [cucharada, pizca, ml, gramos....]

Las búsquedas me gustarían que fueran por:
---- nombre de la receta ---- categoría del plato ---- ingredientes que tiene

Para todo esto y siguiendo la documentación que nos distes he diseñado el siguiente JSON:

{ "recipes": { "Canónigo": { "author": "abuela", "vegetarian" : "true", "preparationTime" : "15 min", "totalDishes": "4", "steps": "bla bla bla bla", "notes": "note note note", "categories": true, } }, "ingredients": { i1:{ name: "huevos" }, i2:{ name: "leche" } }, "categories": { c1:{ name:"Primer Plato"
}, c2:{ name:"Segungo plato" }, c3{ name:"Postre" } } "ingredientInRecipe"{ IIR1{ "recipe":true, "ingredients":true, "amount": 3, "typeAmount": "cucharada" } } }

Pero no sé si voy muy buen encaminado o no. ¡Cualquier tipo de ayuda me vendría genial!

Muchas gracias.

isorna commented 9 years ago

Hola Jose,

creo que la complicación te viene de tener una tabla intermedia adicional (la de cantidad de ingrediente por receta), pero entiendo que tu estructura de datos tendría que ser más o menos así:

{
  "recipes": {
    "recipe1_id": {
      "name": "recipe 1",
      ...
      "ingredientsQty": {
        "ingredientQty1_id": true,
        "ingredientQty2_id": false,
        ...
      }
    }
  }
}

{
  "ingredientQuantities": {
    "ingredientQty1_id": {
      "quantity": "500g",
      "ingredients": {
        "ingredient1_id": true,
        "ingredient2_id": true
      }
    }
    "ingredientQty2"_id: {
      ...
    }
  }
}

{
  "ingredients": {
    "ingredient1_id": {
      "name": "flour"
    },
    ...
  }
}

No sé si te queda más claro así, lo que veo en estas relaciones es la complejidad que te comenté, realmente la tabla de ingredientes podrías no necesitarla, en lugar de relacionar con los ids de los ingredientes, podrías relacionar con el nombre directamente, y la restricción de que sólo puedan elegir ingredientes de una lista la manejas por separado, con un nodo para la lista de ingredientes, pero sin necesidad de relacionarlos con las recetas.