Javascript 从HTML表单中提取数据并将其保存在MongoDB中
如何从HTML表单获取数据并将其保存到带有node和express的MongoDB中?目前,我无法获取模型所需格式的数据。你能帮我找出我遗漏了什么吗?如果有你不懂的词,请不要介意。我把这个翻译成了英语 在HTML文件中,我有两个输入字段:成分和数量,我需要将它们组合在一起。这组输入在页面中存在10次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
<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]]
}];