错误节点TypeError:在发送时无法读取未定义的属性'req'

时间:2019-05-13 11:47:30

标签: javascript node.js

我在这里迷失了方向。我正在尝试使用需要在帖子正文中使用的参数来进行发布请求。此对象只有一个属性步骤。我通过使用for,yield和promise来做到这一点,我得到了这个错误。 响应是不确定的..为什么?谢谢!

controller.js

function postItems(req, res, next){
    eventService.getItems()
    .then(response => Promise.all(function*(){
        const eventType = response.items.filter(type => type.type == 'LIVE')

        for(var i = 10; i < eventType.length; i++){
              const res = eventService.postItems(nameFilter[i])
              yield res
        }
    }()))
    .then(responses => {
        Promise.all(responses.map(response => res.send(response))) //fails here
    })
    .catch(error => {
        console.log('error')
        next(error)
    })
}

服务

async postItems(param) {

    try {
      const response = await axios({
        method: "POST",
        headers: {
          'Content-Type': 'application/json',
          'Authorization': await getToken.getToken()
        },
        url: 'url',
        data: param
      })
      return response.data

    } catch (error) {
      console.log( error)
    }
  }
}

app.js

const express = require('express')
const bodyParser = require('body-parser')
const itemsController = require('../controller/itemsController')
const saveController = require('../controller/saveController')

const app = express()

.use(bodyParser.urlencoded({extended : true}))
.use(bodyParser.json())


.get('/api/v1/items', itemsController.getItems)

.get('/api/v1/save', saveController.postItems)

.use(function(error, req, res, next){
    console.log('error', error)
})

module.exports = app

1 个答案:

答案 0 :(得分:1)

我在这里看到的一个问题是您多次致电response.send。在内部,它调用response.end(),不允许进一步调用response.send。您应使用response.write

参考:https://blog.kevinchisholm.com/javascript/node-js/express-js/response-send-end-write-difference/