如何解决如果正在搜索值,如何在数组中返回json对象
这是我第一次尝试将HTTPS请求实现为代码,因此我不确定100%使用此代码。因此,我的目标是使用JSON对象在数组中搜索一个术语并返回与该值关联的所有内容。这是我的代码:
const campgrounds = [{
name: "Three Rivers Petroglyph Site",town: "Lincoln,NM",lengthLimit: 25,elevation: 4986,numberOfSites: 7,padType: "gravel"
},{
name: "Baca Campground",lengthLimit: 32,elevation: 6397,padType: "dirt"
},{
name: "South Fork Campground",town: "Nogal,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
})
});
,
我想出了这个对我有用的方法,并通过邮递员进行了测试,并通过了我的测试
app.get('/search',res) => {
let searchTerm = req.query.q;
console.log(`Search for ${searchTerm}`);
// TODO
for (const campground of campgrounds) {
if (campground.name == searchTerm){
res.json(campground);
}
}
});
这是我通过邮递员进行的测试:
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);
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。