Как мне разместить несколько объектов в массиве в mon goose? - PullRequest
0 голосов
/ 14 апреля 2020

Я не могу настроить мою модель и маршрутизаторы правильно для отправки нескольких объектов в массив через mon goose. Вот мои настройки:

//Schema
const PickSchema = new Schema({
    pick: {
        type: String,
        required: true,
        unique: true
    },
    team: {
        type: String,
        required: true
    },
    player: {
        type: String,
        required: true,
        unique: true
    }
})

const DraftSchema = new Schema({
    draftboard: [ PickSchema ]
})

module.exports = DraftBoard = mongoose.model('user_draftboard', DraftSchema);


//Router
router.post('/', (req, res) => {
    const newDraft = new DraftBoard({
        draftboard: [{
            pick: req.body.pick,
            team: req.body.team,
            player: req.body.player
        }]      
    });
    newDraft.save().then(newdraftboard => res.json(newdraftboard))
    .catch(err => res.status(500).json({ msg: 'internal error'})
)});

Используя почтальон, я могу разместить один объект в массиве, но моя полезная нагрузка, скорее всего, будет массивом объектов, поэтому мне нужно разместить несколько объектов, и когда я проверю его в почтальон я получаю сообщение об ошибке:

Тело POSTMAN, которое работает:

{
   "pick": "2",
   "team": "Washington Redskins",
   "player": "Chase Young"
}

JSON ответ в POSTMAN

{
    "_id": "5e960a06ff3a7b3c88e680fd",
    "draftboard": [
        {
            "_id": "5e960a06ff3a7b3c88e680fe",
            "pick": "2",
            "team": "Washington Redskins",
            "player": "Chase Young"
        }
    ],
    "__v": 0
}

Но несколько объектов не работают:

{
    "pick": "2",
    "team": "Washington Redskins",
    "player": "Chase Young"
},
{
    "pick": "3",
    "team": "Detroit Lions",
    "player": "Jeff Odukah"
}
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <title>Error</title>
</head>

<body>
    <pre>SyntaxError: Unexpected token , in JSON at position 83

Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 14 апреля 2020

Я предлагаю вам поместить данные запроса POST в массив. Что-то вроде:

[{
    "pick": "2",
    "team": "Washington Redskins",
    "player": "Chase Young"
},
{
    "pick": "3",
    "team": "Detroit Lions",
    "player": "Jeff Odukah"
}]

Помните, вы можете изменить несколько объектов, они просто должны быть в массиве. Или вы можете просто сделать два разных запроса POST, которые я считаю намного лучше и проще. Вы не должны go сходить с ума по своему усмотрению!

Надеюсь, это поможет и решит вашу проблему. Прокомментируйте, если вам нужна дополнительная помощь или содействие!

...