Javascript:具有多个查询参数的嵌套 JSON api 请求
Javascript: Nested JSON api request with multiple query parameters
我尝试为我的下一个网站制作一个 API,但我无法在快速应用程序中使用相同的 url 获得多个查询结果。
虚拟数据:
var data = [{
articles : [{
id : '0',
url : 'foo',
title : 'Foo',
body : 'some foo bar',
category : 'foo',
tags : [
'foo'
]
}, {
id : '1',
url : 'foo-bar',
title : 'Foo bar',
body : 'more foo bar',
category : 'foo',
tags : [
'foo', 'bar'
]
}, {
id : '2',
url : 'foo-bar-baz',
title : 'Foo bar baz',
body : 'more foo bar baz',
category : 'foo',
tags : [
'foo',
'bar',
'baz'
]
}]
}, {
users : [{
name: 'Admin'
}, {
name: 'User'
}]
}];
路由器:
// Grabs articles by categories and tags
// http://127.0.0.1:3000/api/articles/category/foo/tag/bar
router.get('/articles/category/:cat/tag/:tag', function(req, res) {
var articles = data[0].articles;
var q = articles.filter(function (article) {
return article.category === req.params.cat;
return article.tags.some(function(tagId) { return tagId === req.params.tag;});
});
res.json(q);
});
如果我请求http://127.0.0.1:3000/api/articles/category/foo/tag/bar
url,如何嵌套结果?现在,如果我这样做,tag
url 被忽略,只有category
请求才有效。
谢谢你的帮助!
您需要
按如下方式重写return
语句:
return article.category === req.params.cat &&
article.tags.some(function(tagId) {
return tagId === req.params.tag;
});
。使用 &&
运算符,否则您将只测试第一个条件,永远不会到达另一个语句。
以下是当请求在类别"foo"和标签"bar"上时的测试:
var data =
[
{ articles:
[
{ id: '0', url: 'audrey-hepburn', title: 'Audrey Hepburn', body: 'Nothing is impossible, the word itself says ''I''m possible''!', category: 'foo', tags: [ 'foo' ] },
{ id: '1', url: 'walt-disney', title: 'Walt Disney', body: 'You may not realize it when it happens, but a kick in the teeth may be the best thing in the world for you.', category: 'foo', tags: [ 'foo', 'bar' ] },
{ id: '2', url: 'unknown', title: 'Unknown', body: 'Even the greatest was once a beginner. Don''t be afraid to take that first step.', category: 'bar', tags: [ 'foo', 'bar', 'baz' ] },
{ id: '3', url: 'neale-donald-walsch', title: 'Neale Donald Walsch', body: 'You are afraid to die, and you''re afraid to live. What a way to exist.', category: 'bar', tags: [ 'foo', 'bar', 'baz' ] }
]
},
{ users:
[
{ name: 'Admin' },
{ name: 'User' }
]
}
];
req = {params: {cat: 'foo', tag: 'bar'}};
var articles = data[0].articles;
var q = articles.filter(function (article) {
return article.category === req.params.cat &&
article.tags.some(function(tagId) {
return tagId === req.params.tag;
});
});
document.write('<pre>', JSON.stringify(q, null, 4), '</pre>');
查看它如何与最后一个条目匹配。
问题就在这里>>
return article.category === req.params.cat;
return article.tags.some(function(tagId) { return tagId === req.params.tag;});
第一个return
语句将停止函数内的进一步操作所以你需要if ... else
或case
或这里的辅助功能
相关文章:
- 访问嵌套JSON对象的键,其中键是动态的
- 从多维嵌套json数组创建下拉列表
- 带嵌套json的下划线js查找
- 返回嵌套JSON中包含特定键的所有值
- 嵌套JSON到平面HTML表
- 原型Ajax请求参数为嵌套json
- 从对象数组中动态创建嵌套json
- ExtJS 4.1-检索嵌套JSON的hasOne信息
- 更新嵌套json Angularjs中的对象
- 访问嵌套 json 对象的属性将返回未定义
- 如何解析没有键的嵌套json's的javascript
- 显示嵌套json集合的主干
- 列表中呈现的骨干嵌套json对象
- 如何使用promise来反规范化嵌套json
- 正在读取嵌套json,jquery返回undefined
- Ionic/Angular:如何在嵌套json中导航
- 如何访问AngularJs中的嵌套Json对象
- 使用Javascript查找并更新嵌套JSON数组和对象中的所有键值
- 如何获取给定表单详细信息的嵌套json对象
- 通过Javascript中的递归迭代映射嵌套JSON