Я сталкиваюсь с некоторыми трудностями и пытаюсь выяснить, что не так с моим кодом, но у меня не получается.
То, чего я пытаюсь достичь, - это уметь использовать один или два запроса в node.js. К сожалению, я не могу использовать оба. Когда я использую жанр, он не сортируется, но сортировка, кажется, работает в одиночку. Использование жанра также, кажется, вызывает асинхронную проблему c? Я посмотрел на некоторые другие вопросы, но они не были похожи на мои, так как я использую только get и send.
const express = require('express');
const morgan = require('morgan');
const cors = require('cors');
const playstore = require('./playstore.js');
const app = express();
app.use(morgan('common'));
app.use(cors());
app.get('/apps', (req, res) => {
const { genres, sort } = req.query;
let playstoreG = null;
const GENRELIST = [
'Action',
'Puzzle',
'Strategy',
'Casual',
'Arcade',
'Card',
];
if (sort) {
if (!['Rating', 'App'].includes(sort)) {
res.status(400);
res.send('Sort selection must be app or rating.');
} else {
playstore.sort((a, b) =>
a[sort] < b[sort] ? -1 : a[sort] > b[sort] ? 1 : 0
);
}
}
if (genres) {
if (!GENRELIST.includes(genres)) {
res.status(400);
res.send('Apps in this genre not found.');
} else {
playstoreG = playstore.filter(
(q) => q.Genres.toLowerCase() === genres.toLowerCase()
);
}
}
let results = '';
if (playstoreG === 0 || playstoreG === null) {
results = playstore;
} else {
results = playstoreG;
}
res.json(results);
});
app.listen(5000, () => {
console.log('Server is live on PORT 5000!');
});
По какой-то причине, если я использую оба, я получаю асин c Я верю в проблему?
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:526:11)
at ServerResponse.header (C:\Users\*\vsc\gpsServer\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (C:\Users\*\vsc\gpsServer\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (C:\Users\*\vsc\gpsServer\node_modules\express\lib\response.js:267:15)
at ServerResponse.send (C:\Users\*\vsc\gpsServer\node_modules\express\lib\response.js:158:21)
at C:\Users\*\vsc\gpsServer\app.js:38:28
at Layer.handle [as handle_request] (C:\Users\*\vsc\gpsServer\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\*\vsc\gpsServer\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\*\vsc\gpsServer\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\*\vsc\gpsServer\node_modules\expres
Немного данных, с которыми я работаю.
module.exports = [
{
'App': 'ROBLOX',
'Category': 'GAME',
'Rating': 4.5,
'Reviews': '4447388',
'Size': '67M',
'Installs': '100,000,000+',
'Type': 'Free',
'Price': '0',
'Content Rating': 'Everyone 10+',
'Genres': 'Adventure;Action & Adventure',
'Last Updated': 'July 31, 2018',
'Current Ver': '2.347.225742',
'Android Ver': '4.1 and up',
},
{
'App': 'Subway Surfers',
'Category': 'GAME',
'Rating': 4.5,
'Reviews': '27722264',
'Size': '76M',
'Installs': '1,000,000,000+',
'Type': 'Free',
'Price': '0',
'Content Rating': 'Everyone 10+',
'Genres': 'Arcade',
'Last Updated': 'July 12, 2018',
'Current Ver': '1.90.0',
'Android Ver': '4.1 and up',
},
Спасибо, что уделили время!