【问题标题】:How do I post multiple objects to an array in mongoose?如何将多个对象发布到猫鼬中的数组?
【发布时间】:2020-07-27 15:38:04
【问题描述】:

我似乎无法正确配置我的模型和路由器以通过 mongoose 将多个对象发布到数组。这是我的设置:

//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'})
)});

使用邮递员我可以将一个对象发布到数组,但我的有效负载可能是一个对象数组,所以我需要发布多个对象,当我在邮递员中测试它时出现错误:

有效的邮递员正文:

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

POSTMAN 中的 JSON 响应

{
    "_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

有什么想法吗?谢谢!

【问题讨论】:

    标签: node.js express mongoose postman schema


    【解决方案1】:

    我建议您将 POST 请求数据 放入一个数组中。比如:

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

    请记住,您可以更改多个对象,它们只需要在一个数组中即可。或者你可以只发出两个不同的 POST 请求,我觉得这更好、更简单。你不必自己发疯!

    希望对您有所帮助,并解决您的问题。如果您需要更多帮助或帮助,请发表评论!

    【讨论】:

    • 当我这样做时,我的 catch 错误被抛出 msg: 'internal error'
    • 好吧,那只是意味着您没有正确设置架构以一次接受多个对象。同样,我强烈建议您发送两个不同的请求。这要简单得多,不要像我长期以来所做的那样试图使一切都完美无缺。这只是浪费了我尝试探索新事物的时间,并耽误了我的整个项目。
    猜你喜欢
    • 2019-06-09
    • 2017-06-09
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2021-05-06
    • 2019-03-28
    • 1970-01-01
    相关资源
    最近更新 更多