Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ExpressAPI的javascript数组中引用子对象_Javascript_Json_Node.js_Api_Express - Fatal编程技术网

在ExpressAPI的javascript数组中引用子对象

在ExpressAPI的javascript数组中引用子对象,javascript,json,node.js,api,express,Javascript,Json,Node.js,Api,Express,我有一个虚拟数据: var data = [{ articles : [{ id : '0', url : 'foo', title : 'Foo', body : 'some foo bar', category : 'foo', tags : [ 'foo' ] }, { id : '1', url : 'fo

我有一个虚拟数据:

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'
    }]
}];
我有一个路由器,我只想从文章中请求具有其ID的匹配文章:

// Grab single article
// http://127.0.0.1:3000/api/0
router.get('/:id', function(req, res) {
  if(data.length <= req.params.id || req.params.id < 0) {
    res.statusCode = 404;
    return res.send('Error 404: No quote found');
  };
  var q = data[req.params.id];
  res.json(q);
});
//抓取一篇文章
// http://127.0.0.1:3000/api/0
路由器.get('/:id',函数(req,res){

如果(data.length如果您真的想匹配“id”,而不仅仅是数组中的索引,那么您应该这样做:

var articles = data[0].articles;
var q = articles.filter(function (article) {
   return article.id === req.params.id;
});

res.json(q[0]);

如果您确实希望匹配“id”,而不仅仅是数组中的索引,则应执行以下操作:

var articles = data[0].articles;
var q = articles.filter(function (article) {
   return article.id === req.params.id;
});

res.json(q[0]);

外部数组中的第0个元素是包含所有项目的对象。首先需要深入到项目数组:
数据[0]。项目
。然后,要从数组中仅获取id属性与所需id号匹配的对象,可以使用lo_dash库的
\uu.find()
函数


调用类似于:
.find(数据[0].articles,{id:req.params.id});

外部数组中的第0个元素是包含所有项目的对象。首先需要深入到articles数组:
数据[0].articles
。然后,要从数组中仅获取id属性与所需id号匹配的对象,可以使用lo_dash库的
\uu.find()
函数


调用看起来像:
.find(数据[0].articles,{id:req.params.id});

尝试
数据[0].articles[req.params.id]
尝试
数据[0]。articles[req.params.id]
谢谢!这是一个非常好的解决方案!现在我能够定位“url”字段太好了!如何使用
/articles/tags/:id
url访问
标记这样的嵌套对象?
返回article.tags[0]==req.params.id;
仅返回第一篇文章。
返回article.tags.some(函数(tagId){return tagId==req.params.id;});
这几乎很好,但一次只返回一个结果。例如,每3篇文章都有标签
foo
,但在这种情况下,只会查询第一篇文章。您是这样做的吗?:
var articles=data[0]。articles;var qs=articles.filter(函数(文章){return article.tags.some(函数(tagId){return tagId===req.params.id;});});res.json(qs);
谢谢!这是一个非常好的解决方案!现在我也可以将“url”字段作为目标,这很好!如何使用
/articles/tags/:id
url?
return article.tags[0]访问像
标记这样的嵌套对象==req.params.id;
仅返回第一篇文章。
返回article.tags.some(函数(tagId){return tagId==req.params.id;});
这几乎很好,但一次只返回一个结果。例如,每3篇文章都有标签
foo
,但在这种情况下,只会查询第一篇文章。您是这样做的吗?:
var articles=data[0]。articles;var qs=articles.filter(函数(文章){return article.tags.some(函数(tagId){return tagId==req.params.id;});});res.json(qs);