Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从HTML表单中提取数据并将其保存在MongoDB中_Javascript_Html_Node.js_Forms_Express - Fatal编程技术网

Javascript 从HTML表单中提取数据并将其保存在MongoDB中

Javascript 从HTML表单中提取数据并将其保存在MongoDB中,javascript,html,node.js,forms,express,Javascript,Html,Node.js,Forms,Express,如何从HTML表单获取数据并将其保存到带有node和express的MongoDB中?目前,我无法获取模型所需格式的数据。你能帮我找出我遗漏了什么吗?如果有你不懂的词,请不要介意。我把这个翻译成了英语 在HTML文件中,我有两个输入字段:成分和数量,我需要将它们组合在一起。这组输入在页面中存在10次 <form action="/diary/<%= day._id %>/showday" method="post" name="meal"> <div

如何从HTML表单获取数据并将其保存到带有node和express的MongoDB中?目前,我无法获取模型所需格式的数据。你能帮我找出我遗漏了什么吗?如果有你不懂的词,请不要介意。我把这个翻译成了英语

在HTML文件中,我有两个输入字段:成分和数量,我需要将它们组合在一起。这组输入在页面中存在10次

<form action="/diary/<%= day._id %>/showday" method="post" name="meal">
        <div class="">
          <input type="text" name="meal[title]" value="">
        </div>
        <% for(i = 0; i<10; i++) { %>    
        <div>
          <fieldset>
            <select name="meal[ingredients]">
              <% ingredients.forEach(function(singleIngredient){ %>
                  <option value="<%= singleIngredient %>" name="<%= singleIngredient %>"><%= singleIngredient.aine %></option>
            <%  }); %>
            </select>
            <input type="number" name="meal[amount]" placeholder="gr">
          </fieldset>
        </div>
        <% } %>
        <div>
          <button>Submit!</button>
        </div>
</form>
app.js如下所示。在app.js中,我试图将表单数据转换为模型的格式,但当我记录结果时,它看起来与我拥有的种子数据有点不同,我假设这就是为什么这不起作用的原因

Day.findById(req.params.id, function(err, day) {
if (err) {
  console.log(err);
  res.redirect("/diary");
} else {
  var singleMeal = [];
  var singleIngredient = {};
  var singleIngredientArray = [];
  var singleIngredientAmount = "";

  var len = req.body.meal.amount.length;
  for (i=0; i < len; i++) {

//MODIFY DATA SO THAT ITS IN RIGHT FORMAT AND TAKE ONLY INGREDIENTS WHICH HAS AMOUNT ABOVE 0
    if (req.body.meal.amount[i] !== "") {
      singleIngredient.ingredient = req.body.meal.ingredient[i];
      singleIngredient.amount = Number(req.body.meal.amount[i]);
      singleIngredientArray.push(singleIngredient);
singleMeal.push(singleIngredientArray[i]);
console.log(singleIngredient.ingredient + "<<<< ==== singleIngredient.ingredient");
console.log(singleIngredientArray);
console.log(singleMeal[i].title + "<<<< ==== singleMeal.title");
//--- THIS IS WHERE THE GAME ENDS ----
        } else {
        }
      }         
Meal.create(singleMeal, function(err, meal) {
            if (err) {
              console.log(err);
            } else {
              day.meals.push(meal);
              day.save();
              res.redirect("/diary/" + day._id + "/showday");
            }
          });
        };
      });
    });
当我启动应用程序时,这个种子数据被加载到Mongo,并且工作正常。 seed.js:


如果您能指出我的错误所在,我将不胜感激。

请小步解决您的问题。谢谢您的回复!我将以较小的步骤完成这一过程,并检查我在哪里走错了方向。如果需要的话,我会稍后再讨论这个问题。答案的线索是HTML表单返回数据的格式,并按照Lazyexpert的建议采取一些小步骤。这是一个物体中的两个阵列,而不仅仅是两个阵列:)晚安和一些劈柴也有帮助。
Day.findById(req.params.id, function(err, day) {
if (err) {
  console.log(err);
  res.redirect("/diary");
} else {
  var singleMeal = [];
  var singleIngredient = {};
  var singleIngredientArray = [];
  var singleIngredientAmount = "";

  var len = req.body.meal.amount.length;
  for (i=0; i < len; i++) {

//MODIFY DATA SO THAT ITS IN RIGHT FORMAT AND TAKE ONLY INGREDIENTS WHICH HAS AMOUNT ABOVE 0
    if (req.body.meal.amount[i] !== "") {
      singleIngredient.ingredient = req.body.meal.ingredient[i];
      singleIngredient.amount = Number(req.body.meal.amount[i]);
      singleIngredientArray.push(singleIngredient);
singleMeal.push(singleIngredientArray[i]);
console.log(singleIngredient.ingredient + "<<<< ==== singleIngredient.ingredient");
console.log(singleIngredientArray);
console.log(singleMeal[i].title + "<<<< ==== singleMeal.title");
//--- THIS IS WHERE THE GAME ENDS ----
        } else {
        }
      }         
Meal.create(singleMeal, function(err, meal) {
            if (err) {
              console.log(err);
            } else {
              day.meals.push(meal);
              day.save();
              res.redirect("/diary/" + day._id + "/showday");
            }
          });
        };
      });
    });
[object Object]<<<< ==== singleIngredientArray
{ _id: 59731a5156809d5ee310aad0,
  ingredient: 'Kaurahiutale',
  kcal: 100,
  protein: 2,
  carb: 50,
  fat: 1,
  addinfo: '',
  __v: 0 }<<<< ==== singleIngredient.ingredient
undefined<<<< ==== singleMeal[i].title
{ ingredient: '{ _id: 59731357eee39a59fb5a5878,\r\n  ingredient: \'oatmeal\',\r\n  kcal: 100,\r\n  protein: 2,\r\n  carb: 50,\r\n  fat: 1,\r\n  addinfo: \'fineli.fi\',\r\n  __v: 0 }',
  amount: 3 }
{ ingredient: '{ _id: 59731357eee39a59fb5a5878,\r\n  ingredient: \'oatmeal\',\r\n  kcal: 100,\r\n  protein: 2,\r\n  carb: 50,\r\n  fat: 1,\r\n  addinfo: \'fineli.fi\',\r\n  __v: 0 }',
  amount: 3 }
    var ingredients = [
  {
    ingredient: "oatmeal",
    kcal: 100,
    protein: 2,
    carb: 50,
    fat: 1,
    addinfo: ""
  },

  {
    ingredient: "Whey80",
    kcal: 150,
    protein: 80,
    carb: 2,
    fat: 1,
    addinfo: ""
  },
  {
    ingredient: "Tomato",
    kcal: 20,
    protein: 1,
    carb: 4,
    fat: 0,
    addinfo: ""
  }
];

var meals = [{
    title: "Breakfast",
    ingredients: [{ingredient: ingredients[1], amount: 5}]},
  {
  title: "Some snack",
  ingredients: [{
    ingredient: {
        ingredient: "Whey80",
        kcal: 150,
        protein: 80,
        carb: 4,
        fat: 0,
        addinfo: ""
      },
    amount: 40},
    {
      ingredient: {
ingredient: "Whey80",
          kcal: 150,
          protein: 80,
          carb: 4,
          fat: 0,
          addinfo: ""
      },
      amount: 40},
  ]}
];
var days = [{
  day: "010101",
  meals: [meals[0], meals[1]]
}];