モデルに埋め込みドキュメントの複数のインスタンスを保存しようとしていますが、フォームデータを埋め込むたびに埋め込みドキュメントの新しいインスタンスが作成され、配列にプッシュされます。mongooseを使用して埋め込みドキュメントの複数のインスタンスを保存する
これは私の予測スキーマです。
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
const slug = require('slugs');
const teamSchema = new mongoose.Schema({
team1: {
type: String
},
team2: {
type: String
},
prediction:{
type: String
}
});
const predictionSchema = new mongoose.Schema({
author:{
type: String
},
team: [ teamSchema ]
});
module.exports = mongoose.model('Prediction', predictionSchema);
これは私が予測の1つのインスタンスを保存しようとすると、モデル内に保存されたデータは次のように示されている私のコントローラ
const mongoose = require('mongoose');
const Prediction = mongoose.model('Prediction');
exports.homePage = (req, res) => {
res.render('layout', {title: 'Home'});
};
exports.addPrediction = (req, res) => {
res.render('editPrediction', {title: 'Add Prediction'});
};
exports.createPrediction = async(req, res) => {
const prediction = new Prediction({
author: req.body.author,
team: {
team1: req.body.team1,
team2: req.body.team2,
prediction: req.body.prediction
}
});
await prediction.save();
res.redirect('/');
};
そして、私のForm.pug
form.ui.form.segment#register-form(action='/add' method='POST')
.field
label Name
|
.ui.left.labeled.icon.input
input(type='text', placeholder='Name', name='author')
|
i.user.icon
#fields
- for(var i = 0; i < 2; i++)
.field
label Team 1
|
.ui.left.labeled.icon.input
input(type='text', placeholder='Team 1', name='team1')
|
i.soccer.icon
.field
label Team 2
|
.ui.left.labeled.icon.input
input(type='text', placeholder='Team 2', name='team2')
|
i.soccer.icon
.field
label Prediction
|
.ui.left.labeled.icon.input
input(type='text', placeholder='Prediction', name='prediction')
|
i.lock.icon
button.ui.button.fluid(type='submit') Save
ですスクリーンショット。
私は、フォームからの予測の2つのインスタンスを保存しようとします。チームの2番目のインスタンスは最初のインスタンスに追加され、チームのArrayにプッシュされる新しいオブジェクトとして作成されません。
は、私は、新しい文書が作成され、私は自分のフォームからチームの複数のインスタンスを保存する際に、チームの配列にプッシュする必要があります。 私は何を欠席しましたか?
ねえ。提案をありがとうが、私はvarに変更しようとしたが、同じ結果を得ている – Kimkykie