У меня проблемы с структурированием моих данных в MongoDB из пользовательских форм.
Моя идеальная структура документа выглядит следующим образом:
Как вы можете видеть, ингредиенты находятся в массиве, который будет повторяться.
Однако я не могу найти способ при отправке моей формы сделать это.Моя форма для раздела ингредиентов выглядит так:
<h4>Ingredients</h4>
</div>
<div class="row">
<div class="input-field col s6">
<input id="ingredients_1_name" name="ingredients_name_1" type="text" class="validate" required>
<label for="ingredients_1_name">Ingredient</label>
</div>
<div class="input-field col s3">
<input id="ingredients_1_quantity" name="ingredients_quantity_1" type="text" class="validate" required>
<label for="ingredients_1_quantity">Quantity</label>
</div>
<div class="input-field col s3">
<input id="ingredients_1_unit" name="ingredients_unit_1" type="text" class="validate" required>
<label for="ingredients_1_unit">Unit</label>
</div>
</div>
Пользователь может нажимать кнопку JavaScript, которая добавляет новую строку с именем "ингридиенты_2_имя" и так далее.Это приводит к очень неструктурированной БД:
Это, очевидно, беспорядок, который, когда дело доходит до использования данных, требует ненужного количества манипуляций.
Не могу найти в Интернете никакой информации о том, как отправить данные из HTML-формы в MongoDB определенным способом.
В настоящее время при отправке формы вид выглядит следующим образом:
@app.route('/insert_recipe/', methods=['GET','POST'])
def insert_recipe():
"""
This function is called when a user clicks the submit button on the add
recipe form. Uses the insert_one() method to add to the recipes document.
"""
recipes = mongo.db.recipes
dictionary = recipes.insert_one(request.form.to_dict())
return redirect(url_for("get_recipes"))
Это просто принимает имена ввода в качестве ключей и вводимые пользователем значения.
Кто-нибудь может описать, как я могу хранить данные формы в MongoDB в структурированном виде?