Информация не передается в массив через Mongoose, не могу понять, почему - PullRequest
0 голосов
/ 15 марта 2019

Извиняюсь, если на этот вопрос уже отвечали раньше, я проверил другие ответы и не могу их обработать.

У меня есть набор информации, который я хотел бы поместить в массив с именем "teamDetails",Вот соответствующий элемент / post из server.js:

app.post('/create', (req, res) => {
    console.log('Post command received');
    console.log(req.body);
    console.log(req.body.data.teamDetails[0]);
    //We need to push the variable below, 'teamDetails', as an object into an array of the same name
    var teamDetailsObj = {
    // Modified for Postman
    "teamName": req.body.data.teamDetails[0].teamName,
    "teamNameShort": req.body.data.teamDetails[0].teamNameShort,
    "teamfounded": req.body.data.teamDetails[0].teamFounded,
    "teamHome": req.body.data.teamDetails[0].teamHome
    };
    console.log(teamDetails);
    var newTeam = new Team({
        "data.added": new Date(),
        "data.entry": req.body.data.entry
    });

    newTeam.save().then((doc) => {
        console.log("This is newTeam.data: " + newTeam.data);
        console.log("This is teamDetailsObj: " + teamDetailsObj);
        newTeam.data.teamDetails.push(teamDetailsObj);
        var teamId = doc.id;
        res.render('success.hbs', {teamId});
        console.log("Team Added - " + teamId);
    }, (e) => {
        res.status(400).send(e);
    });
});

Вот моя модель team.js:

var mongoose = require('mongoose');
var ObjectID = mongoose.Schema.Types.ObjectId;
var Mixed = mongoose.Schema.Types.Mixed;
var Schema = mongoose.Schema;

var Team = mongoose.model('Team', {
  data: {
    entry: {
      type: String,
      default: "USER.INPUT"
    },
    added: {
      type: Date,
      default: Date.Now
    },
    teamDetails: [
      {
        teamName: {
          type: String,
          trim: true,
          required: true,
          default: "First Team"
        },
        teamNameShort: {
          type: String,
          trim: true,
          uppercase: true,
          maxlength: 3,
          required: true
        },
        teamFounded: {
          type: Number,
          maxlength: 4
        },
        teamHomeCity: {
          type: String
        }
      }
    ]
  }
});

module.exports = {Team};

Наконец, пример данных, которые я пытаюсь вставить черезПочтальон:

{
    "data": {
        "entry": "Postman.Entry",
        "teamDetails": [
            {
                "teamName": "Test Teamname",
                "teamNameShort": "TTN",
                "teamFounded": "1986",
                "teamHome": "London",
                "players": [
                    {
                    "player1Name": "Test Player 1",
                    "player1Position": "Forward",
                    "player1Nationality": "GBR"
                    },
                    {
                    "player2Name": "Test Player 2",
                    "player2Position": "Defender",
                    "player2Nationality": "UKR"
                    },
                    {
                    "player3Name": "Test Player 3",
                    "player3Position": "Goaltender",
                    "player3Nationality": "IRL",
                    "captain": true
                    }
                ],
                "coachingStaff": {
                    "headCoach": "Derp McHerpson",
                    "teamManager": "Plarp McFlarplarp"
                    }
                }
            ]
        }
}

(Не обращайте внимания на раздел игроков, это еще один котелок с рыбой)

В результате использования моего кода выше, результирующая запись для teamDetails представляет собой просто пустой массив.Я просто не могу заставить свой код протолкнуть туда teamDetailsObj.

Любая помощь, которую кто-либо может предоставить, приветствуется.

1 Ответ

1 голос
/ 15 марта 2019

Похоже, что вы добавляете teamObjDetails ПОСЛЕ сохранения его с помощью newTeam.save().then( ... )

Я не очень хорошо знаком с Mongoose, но не понимаю, как могли бы присутствовать сведения о команде, если они не были добавлены перед сохранением.

Дайте мне знать, если это что-то изменит!

A. G

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...