我是javascript新手,需要处理续集中的约束错误。我到处都搜索了与此主题相关的内容,但是仍然找不到合适的答案。我的尝试如下。
app.post('/api/users', (req, res) => {
try {
console.log(req.body);
User.create(req.body)
.then(user=> res.json(user));
} catch (error) {
console.log("Error: "+error);
}});
这里还无法捕获到异常。对于有效的用户输入,它可以发布请求。所以我只需要知道一种处理异常的方法即可。
答案 0 :(得分:0)
您可以将Promise
与.then().catch()
一起使用,或将async/await
与try/catch
一起使用
这是Promise
app.post('/api/users', (req, res) => {
console.log(req.body);
User.create(req.body)
.then(user=> res.json(user))
.catch(err => console.log(err))
});
这是async/await
app.post('/api/users', async (req, res) => {
try {
console.log(req.body);
const user = await User.create(req.body);
res.json(user);
} catch (error) {
console.log("Error: "+error);
}
});
答案 1 :(得分:0)
好像您正在混合两种不同的样式。如果您使用的是then()
,则没有必要使用try catch块:
app.post('/api/users', (req, res) => {
console.log(req.body)
User.create(req.body)
.then(user => res.json(user))
.catch(error => console.log('Error: ' + error))
})
另一种样式是使用async包。使用异步,您的代码将如下所示:
app.post('/api/users', async (req, res) => {
console.log(req.body)
try {
const user = await User.create(req.body)
res.json(user)
}
catch (error) { console.log('Error: ' + error) }
})
这两种方法都有各自的优点和缺点,并且很多人都适当使用它们,例如,像第二个示例中那样,await
方法仅在用async
声明的函数中起作用:async (req, res)
。在这种情况下,使用then()
样式的承诺处理是一种更好的方法