モデルの更新に問題があります。私はドキュメントを作成することができますし、うまく動作しますが、私が更新しようとするとエラーが発生します。モデルが作成されましたが、Express、Mongoose、およびNodeJSで更新できません
/Users/User/Sites/project/app.js:182
a.features.kids = req.body.a.features.kids;
^
TypeError: Cannot read property 'kids' of undefined
モデルは次のようになります。
Affiliate = new Schema({
'name': String,
'address': String,
'features': {
'kids': { type: Boolean, default: false },
}
});
私のフォームフィールドは次のようになります。これらは、更新のために追加された追加フィールドを使用して、作成と更新の両方に使用されます。
<input type="text" name="a[name]" id="a[name]" />
<input type="text" name="a[address]" id="a[address]" />
<input <% if (a.features.kids) { %>checked <% }; %>type="checkbox" name="a[features.kids]" id="a[features.kids]" />
新しいアイテムを作成するためのコード。これは正常に動作し、すべての情報が適切に追加されます。アイテムを更新するための
var a = new Affiliate(req.body.a);
a.save(function() {
res.redirect('/admin');
});
ブロークン・コード:
Affiliate.findOne({ _id: req.params.id}, function(err, a) {
if (!a) return next(new NotFound('Affiliate not found'));
a.name = req.body.a.name;
a.address = req.body.a.address;
a.features.open_gym = req.body.a.features.kids;
a.save(function(err) {
res.redirect('/admin');
});
});
console.log req.body.aの場合はどうなりますか? 'a.name'と 'a.address'は変数の名前ですか? –
ログreq.body.aは私に を与える '{: {ID: '4e1f803999decab541000003'、 名: 'ここでは名前'、 アドレス: '1234ストリート'、 'features.kids': 'で'}} ' 子フォームフィールドに名前を付けたときに何か問題がありますか? – Smosh
フィールドIDにドットを使用しないことをお勧めします。たとえば、features_kidsを実行すると、以下に述べるPeter Lyonsのように正常に動作します。あなたは非常に少しの利益のために回避策の多くをやり終える。 –