我在这里迷失了方向。我正在尝试使用需要在帖子正文中使用的参数来进行发布请求。 该对象只有一个属性步骤。 我使用for来做到这一点,在每次迭代中,我都会将一个对象作为参数发送。
问题是,如果我将return放在for中,工作!但是将其发送给我的第一个对象后,它的完成对我来说不起作用。 如果我将返回值放在for之外,则会抛出此错误:将圆形结构转换为json
帮助! ks!
代码在这里: 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
controller.js
function postItems(req, res, next){
eventService.getItems()
.then(response => {
const eventType = response.items.filter(type => type.type == 'LIVE')
for(var i = 10; i < eventType.length; i++){
const res = eventService.postItems(nameFilter[i])
// return eventService.postItems(nameFilter[i])
}
return res
})
.then(response => {
res.send(response)
})
.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)
}
}
}
答案 0 :(得分:-1)
无论放在哪里,它都只会返回一个值。您可以尝试将Promise.all
与生成器(尚未测试!):
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)))
})
.catch(error => {
console.log('error')
next(error)
})
}