ここで何が間違っているのかわかりません。以下は、foods.ingredients 配列に何も格納しない私のコードです。他のフィールド (名前、カテゴリ) は正しく保存されます。
スキーマ:
var UserSchema = new mongoose.Schema ({
username: String,
password: String,
email: String,
foods: [{
name: String,
category: String,
ingredients: [String]
}],
ingredients: [{
name: String,
category: String
}]
});
HTML フォーム:
<form action="http://localhost:3000/api/foods" method="post">
Name
<input type="text" name="name" />
<br />
Category
<select name="category">
<option value="meat">meat</option>
<option value="pasta">pasta</option>
<option value="soup">soup</option>
</select>
<br />
Ingredients
<select multiple name="ingredients[]">
<option value="beef meat">beef meat</option>
<option value="potatoes">potatoes</option>
<option value="onion">onion</option>
</select>
<br />
<input type="submit" name="submit" id="submit" value="Submit" />
</form>
API.js:
var search = { 'username': "tester"};
var update = {
$addToSet: {
foods: {
name: req.body.name,
category: req.body.category,
ingredients: { $each: req.body.ingredients }
}
}
};
User.findOneAndUpdate(search, update, function(err, food){
if(err) {
console.log(err);
res.end('There was an error saving food.');
} else {
res.end('Food saved successfully!');
};
});