【发布时间】:2020-12-30 13:43:21
【问题描述】:
我在使用 redux 和 express.js 发出 GET 请求时遇到问题。我需要将一些日期传递给后端,然后它将查询一些销售报告。现在我使用了邮递员,它可以工作,它为我提供了我需要的数据,但是当我执行 redux 部分并尝试显示该数据时,它显示“无法在 'Window' 上执行 'fetch':使用 GET/HEAD 请求方法不能有主体”。现在我知道我需要删除正文并将查询添加到 url,但我该怎么办?我应该在哪里做?如果我需要同时修改前端和后端以获取查询,我感到很困惑。谁能帮我解决这个问题? 这是我到目前为止所做的:
前端(Redux)[已编辑]
export const getCustomProfitReport = (startDate, endDate) => (dispatch) => {
dispatch(customProfitReportLoading(true))
const bearer = 'Bearer ' + localStorage.getItem('token')
let params = {
"param1": startDate,
"param2": endDate
}
let query = Object.keys(params)
.map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))
.join('&')
return fetch(baseUrl + 'custom-profit-report?' + query, {
method: 'GET',
headers: {
'Authorization': bearer
}
})
.then(response => {
if (response.ok) {
return response
}
else {
var error = new Error('Error ' + response.status + ': ' + response.statusText);
error.response = response;
throw error;
}
},
error => {
var errmess = new Error(error.message);
throw errmess;
})
.then(response => response.json())
.then(sales => dispatch(addCustomProfitReport(sales)))
.catch(error => dispatch(customProfitReportFailed(error.message)))
}
这是后端(快递)
const express = require('express')
const bodyParser = require('body-parser')
const mongoose = require('mongoose')
var authenticate = require('../authenticate')
const cors = require('./cors')
const Sales = require('../models/sales')
const customProfitRouter = express.Router()
customProfitRouter.use(bodyParser.json())
customProfitRouter.route('/')
.options(cors.corsWithOptions, (req, res) => { res.sendStatus(200) })
.get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, (req,res,next) => {
let start = req.params.startDate
let end = req.params.endDate
Sales.find({
"createdAt":
{
$gte: start,
$lte: end
}
})
.populate('property')
.populate('fee')
.then((sales) => {
res.statusCode = 200
res.setHeader('Content-Type', 'application/json')
res.json(sales)
}, (err) => next(err))
.catch((err) => next(err))
})
module.exports = customProfitRouter
【问题讨论】:
标签: node.js reactjs express redux get