Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS应用程序在多次请求后崩溃_Javascript_Node.js_Express_Request - Fatal编程技术网

Javascript NodeJS应用程序在多次请求后崩溃

Javascript NodeJS应用程序在多次请求后崩溃,javascript,node.js,express,request,Javascript,Node.js,Express,Request,这是我有史以来最烦人的问题,我的nodejs应用程序中有一个简单的get请求处理程序 router.get('/api/docs/fetch', async (req,res) => { try{ let docs = await Doc.find({public: true}).limit(5); const docsToSend = docs.filter(doc => new Date(doc.expires) < new Date()

这是我有史以来最烦人的问题,我的nodejs应用程序中有一个简单的get请求处理程序

router.get('/api/docs/fetch', async (req,res) => {
    try{
       let docs = await Doc.find({public: true}).limit(5);
       const docsToSend = docs.filter(doc => new Date(doc.expires) < new Date().getTime());
       return res.status(200).send({
           docs: docsToSend
       })
    }catch(err){
        return res.status(500).send({
            message: err.message
        })
    }
})
router.get('/api/docs/fetch',异步(req,res)=>{
试一试{
let docs=wait Doc.find({public:true}).limit(5);
const docsToSend=docs.filter(doc=>newdate(doc.expires)

在几次请求后,我的应用程序崩溃(这是一个随机数,现在是22),我已经多次面对这个问题,但我不知道它是如何解决的(我的代码中有
JSON.stringify(array)
,删除stringify解决了这个问题),但我对此没有任何线索,我尝试过用postman执行请求,最后一个请求延迟无穷大,我也尝试过用axios和javascript的本机fetch方法,但我得到了相同的结果。什么是问题以及如何解决它?

这可能是由于范围问题造成的:

请尝试以下操作:


const getDocs=async()=>{
退货单
.找到({
公众:对,,
到期日:{
$gte:new Date().getTime()
}
})
.限额(5);
}
router.get('/api/docs/fetch',异步(req,res)=>{
试一试{
const docs=wait getDocs()
res.status(200).json({docs})
}捕获({message}){
res.status(500).json({message})
}
})

这可能是由于范围问题造成的:

请尝试以下操作:


const getDocs=async()=>{
退货单
.找到({
公众:对,,
到期日:{
$gte:new Date().getTime()
}
})
.限额(5);
}
router.get('/api/docs/fetch',异步(req,res)=>{
试一试{
const docs=wait getDocs()
res.status(200).json({docs})
}捕获({message}){
res.status(500).json({message})
}
})


尝试使用
res.json
而不是
res.send
并删除
return
语句,现在,我想可能是在try-catch块外执行res.send会发生什么情况给我一分钟它不起作用你能记录捕获到的错误吗?或者与我们共享来自崩溃节点进程的日志消息?尝试使用
res.json
而不是
res.send
并删除
return
语句,目前,我认为可能是由于在try-catch块外执行res.send给我一分钟,它不起作用。您可以记录捕获到的错误吗?或者与我们共享来自崩溃节点进程的日志消息?您能否解释一下与作用域问题相关的更多内容,以便更好地理解问题?当然,对于我们的朋友问题,当他返回` return res.status(200).send({docs:docsToSend})时`express框架将尝试检测参数类型,如果它的JSON将更改内容类型以匹配并转换为stringized对象,那么控制器范围之外发生的所有事情(仍然未捕获)都不会有什么混淆,基本概念是你在try-catch中写的任何东西如果某个东西失败了,你将能够捕获它这是try-catch的基本概念,但是这个概念在外部是如何工作的,任何与它相关的文档或文章当你返回某个东西时,它将被返回函数的调用者调用,如果返回值是一个函数,并且被调用,那么它现在就在函数外部call@EslamAbuHugair如果我在wait docs.filter前面放一个wait,而不是编写一个单独的函数(doc=>new…它会解决问题吗。或者我们需要将函数分离到外部。这是如何工作的。我仍然不了解全部内容。尝试解决问题是stackoverflow基本上学到了更多:)因此,希望获得详细的信息,您能否解释一下与范围问题相关的更多内容,以便更好地理解问题。当然,对于我们这里的朋友的问题,当他返回`return res.status(200).send({docs:docsToSend})时`express框架将尝试检测参数类型,以及它的JSON是否会更改内容类型以匹配并转换为stringized对象,以及控制器范围之外发生的所有事情(保持未捕获)有点困惑,所以基本概念是无论你在try-catch里面写什么,如果某个东西失败了,你将能够捕捉到它。这是try-catch的基本概念,但是这个概念在外面是如何工作的,当你返回某个东西时,它会被返回函数的调用方调用,如果返回值是一个函数和gets称它现在在函数之外call@EslamAbuHugair如果我在wait docs.filter前面放一个wait,而不是编写一个单独的函数(doc=>new…它能解决问题吗。或者我们需要将函数从外部分离出来。这是如何工作的。但我仍然不了解全部内容。试图解决问题是stackoverflow基本上学到了更多:)希望获得详细信息