如何防止在nodejs expressjs中冻结获取路由
how to prevent freezing get route on nodejs expresjs
我有一条类似 http://localhost:3000/admin/video/edit/5
的路线,控制器看起来像这样
albumEdit: async (req, res) => {
const editInfoId = req.params.id;
await Movie.findOne({ where: { id: editInfoId } }).then((movie) => {
if (movie) {
res.render('admin/movies/edit', { title: 'Edit Movie On Page One', movie });
}
});
},
出于测试目的,当我在 edit/
之后输入错误的 ID 一段时间后,进程冻结,我收到 500 个错误。
如果有人试图在 URL 中使用错误的 ID 破坏我的应用程序,如何防止这种情况发生?如果有人尝试将此应用程序重定向到错误页面,我想要类似的东西。
我是 node js express js 的新手,我需要一些信息。
如果 movie
是假的或者如果 fineOne
导致错误,你的路由将被冻结,因为对于这两种情况你都没有发送任何响应。
after some time I am getting 500 errors.
如果您 运行 您的节点服务器在网络服务器后面,那么这个 500 是由于超时,因为您的路由器没有发送响应。
how to prevent this if someone tries to break my app with the wrong id in the URL? I want something like if anyone tries to do this application redirect to an error page.
与任何编程语言或代码一样,确保处理所有控制流和可能的异常。
除此之外,如果您使用 await
,在大多数情况下您不想使用 .then
。
albumEdit: async (req, res) => {
const editInfoId = req.params.id;
try {
let movie = await Movie.findOne({
where: {
id: editInfoId
}
})
if (movie) {
res.render('admin/movies/edit', {
title: 'Edit Movie On Page One',
movie
});
} else {
// either the if is not necessary or you have to also handle the else cases
// send some error response
res.send('error')
}
} catch (err) {
// send some error response
res.send('error')
}
}
为了完整起见,这是您需要在代码中进行更改的方式,但如上所述,不要混合使用 await
和 then
:
albumEdit: async (req, res) => {
const editInfoId = req.params.id;
try {
await Movie.findOne({
where: {
id: editInfoId
}
}).then((movie) => {
if (movie) {
res.render('admin/movies/edit', {
title: 'Edit Movie On Page One',
movie
});
} else {
// either the if is not necessary or you have to also handle the else cases
// send some error response
res.send('error')
}
});
} catch (err) {
// send some error response
res.send('error')
}
}
我有一条类似 http://localhost:3000/admin/video/edit/5
的路线,控制器看起来像这样
albumEdit: async (req, res) => {
const editInfoId = req.params.id;
await Movie.findOne({ where: { id: editInfoId } }).then((movie) => {
if (movie) {
res.render('admin/movies/edit', { title: 'Edit Movie On Page One', movie });
}
});
},
出于测试目的,当我在 edit/
之后输入错误的 ID 一段时间后,进程冻结,我收到 500 个错误。
如果有人试图在 URL 中使用错误的 ID 破坏我的应用程序,如何防止这种情况发生?如果有人尝试将此应用程序重定向到错误页面,我想要类似的东西。
我是 node js express js 的新手,我需要一些信息。
如果 movie
是假的或者如果 fineOne
导致错误,你的路由将被冻结,因为对于这两种情况你都没有发送任何响应。
after some time I am getting 500 errors.
如果您 运行 您的节点服务器在网络服务器后面,那么这个 500 是由于超时,因为您的路由器没有发送响应。
how to prevent this if someone tries to break my app with the wrong id in the URL? I want something like if anyone tries to do this application redirect to an error page.
与任何编程语言或代码一样,确保处理所有控制流和可能的异常。
除此之外,如果您使用 await
,在大多数情况下您不想使用 .then
。
albumEdit: async (req, res) => {
const editInfoId = req.params.id;
try {
let movie = await Movie.findOne({
where: {
id: editInfoId
}
})
if (movie) {
res.render('admin/movies/edit', {
title: 'Edit Movie On Page One',
movie
});
} else {
// either the if is not necessary or you have to also handle the else cases
// send some error response
res.send('error')
}
} catch (err) {
// send some error response
res.send('error')
}
}
为了完整起见,这是您需要在代码中进行更改的方式,但如上所述,不要混合使用 await
和 then
:
albumEdit: async (req, res) => {
const editInfoId = req.params.id;
try {
await Movie.findOne({
where: {
id: editInfoId
}
}).then((movie) => {
if (movie) {
res.render('admin/movies/edit', {
title: 'Edit Movie On Page One',
movie
});
} else {
// either the if is not necessary or you have to also handle the else cases
// send some error response
res.send('error')
}
});
} catch (err) {
// send some error response
res.send('error')
}
}