我試圖制作一個只會回傳食譜名稱的獲取路線,但我會獲取陣列中的所有資訊。有什么東西我不見了嗎?
const express = require('express');
const { recipes } = require('./data/data.json');
const app = express();
function filterByQuery(query, recipesArray) {
let filterResults = recipesArray;
if (query.name) {
filterResults = filterResults.filter(recipes => recipes.name === query.name);
}
return filterResults;
};
app.get('/recipes', (req, res) => {
let results = recipes;
if (req.query) {
results = filterByQuery(req.query, results);
}
res.json(results);
});
app.listen(3000, () => {
console.log(`Server is running on port 3000!`);
});
uj5u.com熱心網友回復:
我的目標是在新陣列中回傳食譜的名稱。
首先,從您的其他代碼中可以看出,該recipes變數是一個配方物件陣列,具有諸如.name. 如果是這樣,您將通過執行以下操作獲得所有食譜的所有名稱:
app.get('/recipes', (req, res) => {
const names = recipes.map(recipe => recipe.name);
res.json(names);
});
目前尚不清楚您為什么要呼叫filterByQuery()它,因為它被編程為回傳與特定名稱匹配的整個食譜。這與僅獲取所有食譜的名稱完全不同。
此外,要獲取所有食譜,您不需要使用req.query,因為獲取所有食譜不涉及查詢引數。
uj5u.com熱心網友回復:
你基本上是在過濾記錄
function filterByQuery(query, recipesArray) {
let filterResults = recipesArray;
if (query.name) {
filterResults = filterResults.filter(recipes => recipes.name === query.name);
}
return filterResults;
};
這里菜譜是物件而不是字串值,因此它回傳具有 recipes.name 等于 query.name 的物件。
function filterByQuery(query, recipesArray) {
let results;
if (query.name) {
results = recipesArray.filter(recipes => recipes.name === query.name);
}
return results?.length ? results[0].name : null;
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/433148.html
上一篇:res.status().send()在Promise.all中無法正常作業
下一篇:R使用條件/連接資料操作串列串列
