如果正在搜索值,我如何 return 数组中的 json 对象

How can I return a json object in an array if the value is being searched for

这是我第一次尝试将 HTTPS 请求实现到代码中,所以我不是 100% 有信心使用它。所以我的目标是在我的数组中搜索一个术语,其中包含 JSON 个对象和 return 与该值相关的所有内容。这是我的代码:

const campgrounds = [{
    name: "Three Rivers Petroglyph Site",
    town: "Lincoln, NM",
    lengthLimit: 25,
    elevation: 4986,
    numberOfSites: 7,
    padType: "gravel"
  },
  {
    name: "Baca Campground",
    town: "Lincoln, NM",
    lengthLimit: 32,
    elevation: 6397,
    numberOfSites: 7,
    padType: "dirt"
  },
  {
    name: "South Fork Campground",
    town: "Nogal, NM",
    lengthLimit: 19,
    elevation: 7513,
    numberOfSites: 60,
    padType: "unknown"
  }
]

app.get('/search', (req, res) => {
  let searchTerm = req.query.q;
  console.log(`Search for ${searchTerm}`);

  for (const campground of campgrounds) {
    if (campground == campgrounds.name) {
      res.json({
        campgrounds: campground
      });
    }
  }
});

避免在循环内调用 res.json。而是生成结果(数组),然后在末尾调用 res.json - 在循环之外。

像这样

...

app.get('/search', (req, res) => {
  let searchTerm = req.query.q;
  console.log(`Search for ${searchTerm}`);

  const results = []

  for (const campground of campgrounds) {
    if (campground.name == searchTerm) {
      results.push(campground);
    }
  }
  res.json({
     campgrounds: results
  })
});

我想通了这个对我有用的东西,运行 通过 Postman 它通过了我的测试

app.get('/search', (req, res) => {
    let searchTerm = req.query.q;
    console.log(`Search for ${searchTerm}`);

    // TODO

        for (const campground of campgrounds) {
                if (campground.name == searchTerm){
                        res.json(campground);
                }
        }
});

这是我通过 Postman 运行 进行的测试:

pm.test("name check", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.name).to.eql('Three Rivers Campground');
});
pm.test("length check", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.lengthLimit).to.eql(25);
});
pm.test("elevation check", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.elevation).to.eql(6332);
});