Массив MongoDB остается пустым после POST - PullRequest
0 голосов
/ 25 марта 2020

Если предварительно сформировать пост-запрос (по бессоннице), массив "games" остается пустым. Я что-то упустил?

ОБНОВЛЕНИЕ: новая ошибка после array.push({})

"errorValidationError: games.0.gameID: требуется путь gameID., Games.0.isGameActivation: Path isGameActivated требуется., Games.0.isStartTimeTBD: требуется путь isStartTimeTBD., Games.0.startDateEastern: требуется путь startDateEastern., Games.0.startTimeISO: требуется путь startTimeISO., Игры. 0.hTeam: требуется путь hTeam., Games.0.hTeamScore: требуется путь hTeamScore., Games.0.hTeamTricode: требуется путь hTeamTricode., Games.0.vTeam: путь vTeam требуется., games.0.vTeamScore: путь vTeamScore требуется., games.0.vTeamTricode: путь vTeamTricode требуется. "

enter image description here

Ответы [ 3 ]

0 голосов
/ 25 марта 2020

Вы определяете свою модель с помощью свойства games, и внутри этого свойства содержится вся информация.

При создании модели вы не использовали свойство games.

Попробуйте это:

const newGame = new Game({_id});
newGame.games.push({ // your data here }); 
newGame.save();
0 голосов
/ 25 марта 2020

ПОЛУЧИЛ ЭТО!

Я такой тупой ... Нужно было сначала l oop над запросом, а затем pu sh в массив! Вот код:

// ADD GAMES
router.route('/add').post((req, res) => {
    const _id = req.body._id;
    let games = [];
    req.body.games.forEach(game => {

        const gameID = game.gameID;
        const isStartTimeTBD = game.isStartTimeTBD;
        const isGameActivated = game.isGameActivated;
        const startTimeEastern = game.startDateEastern;
        const startDateEastern = game.startDateEastern;
        const startTimeISO = game.startTimeISO;
        const vTeam = game.vTeam;
        const vTeamTricode = game.vTeamTricode;
        const vTeamScore = game.vTeamScore;
        const hTeam = game.hTeam;
        const hTeamTricode = game.hTeamTricode;
        const hTeamScore = game.hTeamScore;

        games.push({
            gameID,
            isGameActivated,
            isStartTimeTBD,
            startDateEastern,
            startTimeEastern,
            startTimeISO,
            hTeam,
            hTeamScore,
            hTeamTricode,
            vTeam,
            vTeamScore,
            vTeamTricode,
        });
    });

    const newGame = new Game ({
        _id,
        games: games
    })

    newGame.save()
    .then(() => res.json('Game added cuz'))
    .catch(err => res.status(400).json('error' + err));

});

0 голосов
/ 25 марта 2020

Вы забыли вызвать save для объекта newGame. new Game({ ... }) создаст только объект модели, которую вы создали. Вам необходимо вызвать метод save для объекта, чтобы сохранить его обратно в базу данных.

newGame.save()

Более подробную информацию можно найти здесь

РЕДАКТИРОВАТЬ ПОСЛЕ ОБНОВЛЕНИЯ

Я заметил, что вы также указали поле _id при создании объекта. Если это обновление существующего документа, которое вы намереваетесь сделать, я настоятельно рекомендую использовать один из предложений findAndUpdate в стиле mon goose. Для этого можно использовать несколько методов, например findByIdAndUpdate, findOneAndUpdate или просто update со значением upsert, установленным в значение true (если документ, соответствующий критериям, еще не существует, он будет создан, когда upsert = true).

Дайте мне знать, как это происходит.

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