Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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
Node.js nodejs expressjs result.end()如果从回调调用,则不会发送POST请求的结果_Node.js_Asynchronous_Express - Fatal编程技术网

Node.js nodejs expressjs result.end()如果从回调调用,则不会发送POST请求的结果

Node.js nodejs expressjs result.end()如果从回调调用,则不会发送POST请求的结果,node.js,asynchronous,express,Node.js,Asynchronous,Express,我有一个express应用程序,可以处理类似以下内容的post请求(coffeescript) #处理CSV上传 app.post'/upload',(请求、回复)-> res.setHeader'内容类型','文本/json' 如果!请求会话用户? res.json 成功:错 返回 如果!req.files.files?| |!req.files.files.length res.json 成功:错 消息:“未上载任何文件” 返回 file=req.files.files[0] 如果file.

我有一个express应用程序,可以处理类似以下内容的post请求(coffeescript)

#处理CSV上传
app.post'/upload',(请求、回复)->
res.setHeader'内容类型','文本/json'
如果!请求会话用户?
res.json
成功:错
返回
如果!req.files.files?| |!req.files.files.length
res.json
成功:错
消息:“未上载任何文件”
返回
file=req.files.files[0]
如果file.mime不是“text/csv”
res.json
成功:错
消息:“上传类型无效”
返回
#查找此csv中引用的所有托运人的ID
客户\托运人\ ID=[]
chainer=new Sequelize.Utils.QueryChainer
csv()
.from.stream(fs.createReadStream(file.path))
.to.path(“/tmp/tempcv.out”)
.transform((行)->
返回行
).on('记录',(行,索引)->
chainer.add DB.Order.create
po_num:Math.random()+“”
描述:Math.random()+“”
请求的\u由:“”
收到:假
状态:“已收到采购订单”
).on('结束',(计数)->
console.log“结束”
console.log计数
chainer.run().success()->
console.log“chainer fin”

res.json#但是
chainer-fin
确实会被记录,对吗?@robertklep,是的,我确实看到“chainer-fin”登录到我的控制台,当你说“不返回任何东西”时,这是否意味着响应是空的?或者请求挂起,或者发出错误消息?因为从外观上看,它应该可以正常工作。是的,响应是空字符串,我用curl确认了它,我同意这很奇怪,如果您将
res.json
更改为
res.send
,那么如果您将
res.json
放入mand(后跟
return
)位于处理程序的顶部(以确保没有中间件过滤掉您的响应)。如果您在节点端没有收到错误,则尚未调用
res.end()
(否则您将收到错误)。
#Handle CSV Uploads
app.post '/upload', (req, res) ->
  res.setHeader 'Content-Type', 'text/json'

  if !req.session.user?
    res.json
      success: false
    return

  if !req.files.files? || !req.files.files.length
    res.json
      success: false
      message: 'No Files Uploaded'
    return

  file = req.files.files[0]

  if file.mime is not 'text/csv'
    res.json
      success: false
      message: 'Invalid Upload Type'
    return


  #Find IDs of all shippers referenced in this csv
  client_shippers_ids = []
  chainer = new Sequelize.Utils.QueryChainer

  csv()
    .from.stream(fs.createReadStream(file.path))
    .to.path('/tmp/tempcsv.out')
    .transform((row) ->

      return row

    ).on('record', (row, index)->

      chainer.add DB.Order.create
        po_num:      Math.random() + ''
        description: Math.random() + ''
        requested_by: ''
        received:    false
        status:      'Purchase Order Received'

    ).on('end', (count)->
      console.log 'end'
      console.log count
      chainer.run().success () ->
        console.log 'chainer fin'
        res.json #<----- This part does not send
          success: true
          message: 'complete'
    )
res.json #<----- This part does not send
              success: true
              message: 'complete'