我写了一个简单的快递应用程序,用户可以搜索游戏的名称,并根据游戏的类型进行过滤,并按标题或排名进行排序。游戏数据是具有App,Rate和Genre等键的对象数组 但是,我收到控制台错误“发送到客户端后无法设置标题”。
请求仍然返回正确的过滤结果。
这是什么意思?
const express = require('express');
const morgan = require('morgan');
const cors = require('cors');
const googleApps = require('./google-apps')
const app = express();
app.use(morgan('common'));
app.use(cors());
app.get('/apps', (req, res) => {
let {
search = '', sort, genres
} = req.query;
if (sort) {
if (!['rating', 'app'].includes(sort)) {
return res.status('400')
.send('Sort must be one of "app" or "rating"')
}
}
if (genres) {
if (!['Action', 'Puzzle', 'Strategy', 'Casual', 'Arcade', 'Card'].includes(genres)) {
return res.status('400')
.send('Genres must be one of Action, Puzzle, Strategy, Casual, Arcade, Card')
}
}
let results = googleApps.filter(app =>
app.App
.toLowerCase()
.includes(search.toLowerCase())
)
if (sort) {
if (sort === 'rating') {
sort = 'Rating'
} else {
sort = 'App'
}
results
.sort((a, b) => {
return a[sort] > b[sort] ? 1 : a[sort] < b[sort] ? -1 : 0;
});
}
if (genres) {
let genreResult = results.filter(app =>
app
.Genres
.toLowerCase()
.includes(genres.toLowerCase())
)
res.json(genreResult)
console.log(genreResult)
}
res.json(results)
})
module.exports = app;
答案 0 :(得分:1)
例如,当您尝试向客户端发送不止一个响应,一个请求,一个响应的多个响应时,就会发生这种情况
res.send({ data: "I want to send this message" });
res.send({ data: "But I also want to send this message" });
这永远不会起作用,因为您正尝试为同一请求发送多个响应。
这种情况发生在您的代码中,正如@ ayush-gupta所说,您尝试发送res.json(genreResult)
,您应该返回到达发送响应的位置。