2017-02-08 2 views
0

Ich versuche, Daten von einem JSON-Objekt zu extrahieren, indem ich Feldnamen übergebe, aber dann bekomme ich die undefinierten Ergebnisse, wenn ich versuche, Daten zu extrahieren. Aus irgendeinem Grund ist die Art, wie ich das JSON-Objekt bekomme, nicht so, wie ich es erwartet habe. Was könnte der Fehler sein?Daten aus einem JSON-Objekt im Knoten js abrufen?

JS-Code -

function initfunc() { 
        $.ajax({ 
         type: "POST", 
         contentType: "application/json; charset=utf-8", 
         url: "/dashboard", 
         data: JSON.stringify({country: country[counter], bankid: bankid[counter]}), 
         dataType: "json", 
         success: function (Result) { 
          Result = Result.Resultset 
          // console.log("result", Result); 


          // console.log("result",Result); 
          var data = []; 
          var merchantname = []; 
          var successtranscs = []; 
          var failedtranscs = []; 
          var servicetranscs = []; 
          var bankname; 
          console.log("result",Result); 
          for(var i in Result) { 
           merchantname.push(Result[i].MERCHANTNAME); // or .MERCHANTNAME? 
           successtranscs.push(Result[i].NO_OF_SUCCESSFUL_TRANSACTIONS); // or .NO_OF_SUCCESSFUL_TRANSACTIONS? 
           failedtranscs.push(Result[i].NO_OF_FAILED_BANK_TRANSACTIONS); // or .NO_OF_FAILED_BANK_TRANSACTIONS? 
           servicetranscs.push(Result[i].NO_OF_FAILED_SERVICE_TRANSACTIONS); // or .NO_OF_FAILED_SERVICE_TRANSACTIONS? 
           bankname = Result[i].BankName; // or .BankName? 
          } 
          //console.log("merchantname",merchantname); 
          StackedChart(bankname, merchantname, successtranscs, failedtranscs, servicetranscs); 
          merchantname = []; 
          successtranscs = []; 
          failedtranscs = []; 
          servicetranscs = []; 
          rows = null; 
          if (counter == country.length - 1) { 
           counter = -1; 
           counter++; 
          } 
          else { 
           counter++; 
          } 
         } 
        }); 





       } 

server.js -

app.post('/dashboard', function (req, res) { 
    cnn.TransactionInfo(req.body.country,req.body.bankid, function (err, result) { 
     var resultset = {"Result":result}; 
     console.log(resultset); 

     res.send({ Resultset : resultset }); 


    }); 
}); 

Anfängliche Ergebnis aus gespeicherten Prozedur - resultSet-

{ Result: 
    [ { BankName: 'IM BANK', 
     MERCHANTNAME: 'MPesa', 
     NO_OF_SUCCESSFUL_TRANSACTIONS: 29, 
     NO_OF_FAILED_BANK_TRANSACTIONS: 0, 
     NO_OF_FAILED_SERVICE_TRANSACTIONS: 4 }, 
    { BankName: 'IM BANK', 
     MERCHANTNAME: 'Zuku', 
     NO_OF_SUCCESSFUL_TRANSACTIONS: 1, 
     NO_OF_FAILED_BANK_TRANSACTIONS: 0, 
     NO_OF_FAILED_SERVICE_TRANSACTIONS: 0 }, 
    { BankName: 'IM BANK', 
     MERCHANTNAME: 'BALANCE', 
     NO_OF_SUCCESSFUL_TRANSACTIONS: 21, 
     NO_OF_FAILED_BANK_TRANSACTIONS: 0, 
     NO_OF_FAILED_SERVICE_TRANSACTIONS: 0 }, 
    { BankName: 'IM BANK', 
     MERCHANTNAME: 'AIRTEL', 
     NO_OF_SUCCESSFUL_TRANSACTIONS: 2, 
     NO_OF_FAILED_BANK_TRANSACTIONS: 0, 
     NO_OF_FAILED_SERVICE_TRANSACTIONS: 0 }, 
    { BankName: 'IM BANK', 
     MERCHANTNAME: 'SAFARICOM', 
     NO_OF_SUCCESSFUL_TRANSACTIONS: 4, 
     NO_OF_FAILED_BANK_TRANSACTIONS: 0, 
     NO_OF_FAILED_SERVICE_TRANSACTIONS: 0 }, 
    { BankName: 'IM BANK', 
     MERCHANTNAME: 'FIXEDDEPOSIT', 
     NO_OF_SUCCESSFUL_TRANSACTIONS: 1, 
     NO_OF_FAILED_BANK_TRANSACTIONS: 0, 
     NO_OF_FAILED_SERVICE_TRANSACTIONS: 0 }, 
    { BankName: 'IM BANK', 
     MERCHANTNAME: 'FOREX', 
     NO_OF_SUCCESSFUL_TRANSACTIONS: 1, 
     NO_OF_FAILED_BANK_TRANSACTIONS: 0, 
     NO_OF_FAILED_SERVICE_TRANSACTIONS: 0 }, 
    { BankName: 'IM BANK', 
     MERCHANTNAME: 'KITSA2P', 
     NO_OF_SUCCESSFUL_TRANSACTIONS: 1, 
     NO_OF_FAILED_BANK_TRANSACTIONS: 0, 
     NO_OF_FAILED_SERVICE_TRANSACTIONS: 0 }, 
    { BankName: 'IM BANK', 
     MERCHANTNAME: 'STATEMENT', 
     NO_OF_SUCCESSFUL_TRANSACTIONS: 2, 
     NO_OF_FAILED_BANK_TRANSACTIONS: 0, 
     NO_OF_FAILED_SERVICE_TRANSACTIONS: 0 }, 
    { BankName: 'IM BANK', 
     MERCHANTNAME: 'TRANSFER', 
     NO_OF_SUCCESSFUL_TRANSACTIONS: 1, 
     NO_OF_FAILED_BANK_TRANSACTIONS: 0, 
     NO_OF_FAILED_SERVICE_TRANSACTIONS: 0 } ] } 

Dies ist, was ich nach dem Senden von Daten zu meinem Client-Skript - Die Ergebnismenge wird -

result: 
Object 
Result 
: 
Array[9] 
0 
: 
Object 
BankName 
: 
"IM BANK" 
MERCHANTNAME 
: 
"MPesa" 
NO_OF_FAILED_BANK_TRANSACTIONS 
: 
0 
NO_OF_FAILED_SERVICE_TRANSACTIONS 
: 
2 
NO_OF_SUCCESSFUL_TRANSACTIONS 
: 
25 
+0

Sie passieren in einem Objekt mit einem Resultset Mitglied ein Objekt mit einem Array in einem Element gespeichert enthält Ergebnis genannt, so dass Sie wahrscheinlich ändern wollen „Ergebnis = Result.Resultset“ auf „Ergebnis = Ergebnis .Resultset.Result "und wahrscheinlich Dinge etwas deutlicher benennen. –

+0

eine Sache entweder toJSON() - Funktion oder JSON.parse() verwenden, danach können Sie Ihre Daten in JSon ändern. dann können Sie es leicht extrahieren. –

Antwort

0

du im Backend tun sollten beim Senden von Daten

res.json(resultset); 

zum Frontend während Frontend Empfang

console.log("result",JSON.stringify(Result)); //to display in string format 

auch, sehen Sie die Daten im gewünschten Format erhalten zu schieben in Arrays, wie Sie

0

USERS.JSON

{ 
    "user1" : { 
     "name" : "mahesh", 
     "password" : "password1", 
     "profession" : "teacher", 
     "id": 1 
    }, 
    "user2" : { 
     "name" : "suresh", 
     "password" : "password2", 
     "profession" : "librarian", 
     "id": 2 
    }, 
    "user3" : { 
     "name" : "ramesh", 
     "password" : "password3", 
     "profession" : "clerk",  
     "id": 3 
    } 
} 
wollen

-Code

 var express = require('express'); 
      var app = express(); 
     var fs = require("fs"); 

    app.get('/listUsers', function (req, res) { 
    fs.readFile(__dirname + "/" + "users.json", 'utf8', function (err, data) { 


     console.log(data); 
     res.end(data); 
    }); 
})