2017-11-16 9 views
-2

私は以下のコードを試しました。 POSTMANコンソール応答がある:JSONレスポンスを作成するときに、なぜ「未定義」エントリが表示されるのですか?

「未定義[対象オブジェクト]、[対象オブジェクト]、[対象オブジェクト]、[オブジェクト オブジェクト]、[対象オブジェクト]、[対象オブジェクト]、[対象オブジェクト] 、[オブジェクト オブジェクト]、」

私は正しいJSON出力をしたい:

exports.getIssues = function(req, res) { 
     console.log(filename + '>>get Issues>>'); 
     var response = { 
      status: Boolean, 
      message: String, 
      data: String 
     }; 
     var request = require('request'); 
     var username = 
      const.username; 
     var password = 
      const.password; 
     var options = { 
      url: 'https://computenext.atlassian.net/rest/api/2/search?jql=status+%3D+Resolved+ORDER+BY+updated', 
      auth: { 
       username: username, 
       password: password 
      } 
     }; 

     request(options, function(error, obj) { 
      if (error) { 
       response.message = appmsg.DATA_NT_FOUND; 
       response.status = false; 
       response.data = obj; 
       res.send(response); 
      } else { 
       response.message = appmsg.DATA_FOUND; 
       response.status = true; 
       response.data = JSON.parse(obj.body); 
       //res.send(response); 
       var issueKey = response.data.issues; 

       // var keyData = issueKey[0].key; 
       // console.log(response.data.issues); 
       // console.log(keyData); 
       var output = []; 
       for (var i = 0; i < issueKey.length; i++) { 
        var issue = issueKey[i].key; 
        //var key = []; 
        //key.push(issue); 
        console.log(issue); 

        var respon = { 
         status: Boolean, 
         message: String, 
         data: String 
        }; 
        var request = require('request'), 
         username = 
         const.username, 
         password = 
         const.username, 
         url = "https://computenext.atlassian.net/rest/api/2/issue/" + issue, 
         auth = "Basic " + new Buffer(username + ":" + password).toString("base64"); 

        //console.log(url); 
        request({ 
         url: url, 
         headers: { 
          "Authorization": auth 
         } 
        }, function(err, object) { 
         if (object) { 

          var info = object; 
          output.push(info); // this is not working as ouput is undefined at this point 
          //var pout = JSON.parse(output); 
          //console.log(info); 
          console.log("=============================================================================="); 
          //console.log(output); 
          console.log("******************************************************************************"); 
          if (issueKey.length === output.length) { 
           respon.message = appmsg.DATA_FOUND; 
           respon.status = true; 
           respon.data = output; 
           //console.log(output); 
           //res.send(respon); 


           var id = issueKey[0].id; 
           console.log(id); 

           var commitout = []; 
           for (var i = 0; i < issueKey.length; i++) { 
            var commits = issueKey[i].id; 
            console.log(commits); 



            var request = require('request'), 
             username = 
             const.username, 
             password = 
             const.password, 
             url = "https://computenext.atlassian.net/rest/dev-status/1.0/issue/detail?issueId=" + commits + "&applicationType=stash&dataType=repository", 
             auth = "Basic " + new Buffer(username + ":" + password).toString("base64"); 

            //console.log(url); 
            var test = []; 
            request({ 
             url: url, 
             headers: { 
              "Authorization": auth 
             } 
            }, function(err, obj1) { 
             if (obj1) { 
              var info1 = obj1; 
              commitout.push(info1); 
              var resultdone = []; 
              if (issueKey.length === commitout.length) { 
               respon.message = appmsg.DATA_FOUND; 
               respon.status = true; 
               respon.data = commitout; 
               // console.log(commitout); 
               //var test = merge(output, commitout); 
               //var text = output.body[0]; 

               resultdone.push = output + commitout; 
               console.log(resultdone); 
               res.send(resultdone); 
              } 
             } 
            }); 
           } 

          } 
         } 

        }); 

       } 
      } 

     }); 

    }; 
+0

をあなたは正しい出力とはどういう意味ですか? – Nae

+0

私は応答yaarが必要です。今すぐ私は "[オブジェクトオブジェクト]"を取得しました – Jivi

答えて

0

あなたはここで行うには何をしようとしている:resultdone.push = output + commitout; これはしたがって、あなたの配列を連結s。あなたはなぜそれをresultdone.pushに割り当てていますか?私はあなたが実際にメソッドを呼びたいと思う。

は、代わりにこれを試してみてください:

resultdone.push(commitout.concat(output)) 
+0

ありがとう!しかし、あなたのコードを試しました。しかし、私は "コミットアウト"配列応答しか持っていません。私は連結結果が必要です。 – Jivi

+0

おそらく 'output'配列が空であるか、または未定義です。そういう場合にはconsole.logを参照してください。 –

+0

ああ、それを指摘してくれてありがとう。ありがとうございました! – Jivi

関連する問題