我在这里迷失了方向。我正在尝试使用需要在帖子正文中使用的参数来进行发布请求。此对象只有一个属性步骤。我通过使用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
答案 0 :(得分:1)
我在这里看到的一个问题是您多次致电response.send
。在内部,它调用response.end()
,不允许进一步调用response.send
。您应使用response.write
。
参考:https://blog.kevinchisholm.com/javascript/node-js/express-js/response-send-end-write-difference/