即使在我输入带有firstName键和填写值的请求时,仍然收到错误“在请求字段中缺少firstName”。有人有什么想法吗?我真的很需要帮助,因为我是新手。作者是猫鼬的合集,我正在尝试通过“ if”语句,并返回作者列表。

app.post('/authors', function (req, res) {
const requiredFields = ['firstName', 'lastName', 'userName'];
requiredFields.forEach(field => {
    if (!(field in req.body)) {
        const message = `Missing \`${field}\` in request body`;
        console.error(message);
        return res.status(400).send(message);
    }
});

Author
    .findOne({
        userName: req.body.userName
    })
    .then(author => {
        if (author) {
            const message = `Username already taken`;
            console.error(message);
            return res.status(400).send(message);
        } else {
            Author
                .create({
                    firstName: req.body.firstName,
                    lastName: req.body.lastName,
                    userName: req.body.userName
                })
                .then(author => res.status(201).json({
                    _id: author.id,
                    name: `${author.firstName} ${author.lastName}`,
                    userName: author.userName
                }))
                .catch(err => {
                    console.error(err);
                    res.status(500).json({
                        error: 'Something went wrong'
                    });
                });
        }
    })
    .catch(err => {
        console.error(err);
        res.status(500).json({
            error: 'Something went really really wrong'
        });
    });
});

最佳答案

如果您使用Express 4.16.0或更高版本,则可以使用以下命令:
app.use(express.json());

09-20 04:24