Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
Node.js通过嵌套的Javascript对象循环_Javascript_Node.js_Javascript Objects_Fb Graph - Fatal编程技术网

Node.js通过嵌套的Javascript对象循环

Node.js通过嵌套的Javascript对象循环,javascript,node.js,javascript-objects,fb-graph,Javascript,Node.js,Javascript Objects,Fb Graph,我希望有来自Facebook的帖子+附件,这样我就可以创建帖子列表。问题是我想为每个帖子提要在数组中放置属性:id、message和任何附件。我不确定是需要迭代数组中的对象,还是可以选择ID并获取相关信息 另外,我使用async.瀑布()来获取同步调用,因为我将进行依赖于上一个调用的其他调用 我尝试此操作以获取附件的id、消息和src url: var async = require("async"); var graph = require('fbgraph'); async.waterfa

我希望有来自Facebook的帖子+附件,这样我就可以创建帖子列表。问题是我想为每个帖子提要在数组中放置属性:id、message和任何附件。我不确定是需要迭代数组中的对象,还是可以选择ID并获取相关信息

另外,我使用async.瀑布()来获取同步调用,因为我将进行依赖于上一个调用的其他调用

我尝试此操作以获取附件的id、消息和src url:

var async = require("async");
var graph = require('fbgraph');

async.waterfall([
    getFeed,
    getPostPicture,
], function (err, result) {
});
function getFeed(callback) {
    graph.get("/.../feed" + "?fields=message,attachments&access_token=APPID|APPSECRET", function(err, res) {
        callback(null, res);
    });
}
function getPostPicture(arg1, callback) {

    var feedData = arg1.data;
    for(var i in feedData)
    {
        var id = feedData[i].id;
        var message = feedData[i].message;
        var feedAttachment = feedData[i].attachments

        for (var j in feedAttachment)
        {
            var attachment = feedAttachment.data;
            var attachmentURL = attachment[i].src;
            for (var j in attachmentURL)
            {
                var attachmentURL = feedAttachment.src;
            }
        }
    }
        console.log(attachment);
}
以上将输出:

[ { description: 'post message 1',
    media: { image: [Object] },
    target:
     { id: '...',
       url: 'https://www.facebook.com/.../photos/a............/.../?type=3' },
    title: 'Timeline Photos',
    type: 'photo',
    url: 'https://www.facebook.com/.../photos/a............/.../?type=3' } ]
下面是我第一次在源代码中调用graph.get的响应

我需要{data->[message,id,attachments->data[src]]}

{
  "data": [
    {
      "message": "post message 1",
      "id": "..._...",
      "attachments": {
        "data": [
          {
            "description": "picture 1",
            "media": {
            "image": {
            "height": 256,
            "src": "https://scontent.xx.fbcdn.net/v/t1.0-9/..._..._..._n.png?oh=...&oe=...",
            "width": 256
          }
        },
        "target": {
          "id": "...",
          "url": "https://www.facebook.com/.../photos/a............/.../?type=3"
        },
        "title": "Timeline Photos",
        "type": "photo",
        "url": "https://www.facebook.com/.../photos/a............./..../?type=3"
       }
      ]
     }
    },
    {
      "message": "Test status update 123",
      "id": "..._..."
    }
  ],
  "paging": {
  "previous": "https://graph.facebook.com/v2.8/.../feed?fields=message,attachments&format=json&since=...&access_token=...&limit=25&__paging_token=enc_...&__previous=1",
  "next": "https://graph.facebook.com/v2.8/.../feed?fields=message,attachments&format=json&access_token=...&limit=25&until=...&__paging_token=enc_..." 
  }
}

getPostPicture
函数中使用for循环时,i变量实际上是数组
feedData
中的元素,因此必须
i.id
i.attachments
i.message
。我还认为,由于您在两个循环中使用相同的
j
,其中一个循环嵌套在另一个循环中,因此它也不能正常工作,因此您可能也必须更改它,并用您期望的输出类型解释您的问题。

那么
console.log(附件)是如何工作的网络输出?您确定您的代码粘贴正确吗?请展开您的代码,以便更好地显示在哪一点生成输出。