我目前正在使用 JS 开发 REST API,但遇到以下问题: 该代码有效,但如果我尝试删除、放置或修补不存在的条目,它不会返回错误,但会打印成功消息。这是为什么?获取路由完美运行。
app.route("/verbrauch/:parameterVariable")
.get((req, res) => {
Verbrauch.findOne({
bezeichnung: req.params.parameterVariable
}, (err, gefundeneEintraege) => {
if (gefundeneEintraege) {
res.send(gefundeneEintraege);
} else {
res.send("Success");
}
});
})
.put((req, res) => {
Verbrauch.update({
bezeichnung: req.params.parameterVariable
}, {
bezeichnung: req.body.bezeichnung,
stueckzahl: req.body.stueckzahl,
monat: req.body.monat,
jahr: req.body.jahr,
}, {
overwrite: true
},
err => {
if (!err) {
res.send("Success");
} else {
res.send(err);
}
}
);
})
.patch((req, res) => {
Verbrauch.update({
bezeichnung: req.params.parameterVariable
}, {
$set: req.body
},
err => {
if (!err) {
res.send("Success")
} else {
res.send(err);
}
}
);
})
.delete((req, res) => {
Verbrauch.deleteOne({
bezeichnung: req.params.parameterVariable
},
err => {
if (!err) {
res.send("Success");
} else {
res.send(err);
}
}
);
});
最佳答案
造成这种情况的原因有多种。
首先,如果您尝试更新数据库中不存在的内容。它不会返回 err,并且会在结果中返回 null。
其次,你不应该写res.send(err)。因为,如果你只写 res.send 那么 ExpressJs 会添加默认状态代码 200,这是成功的指示。 你可以给
res.status(400).send(err)
或
res.status(500).send(err)
关于javascript - 放置、修补和删除不会返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59577610/