1

json ファイルをループしてすべてのエピソードを選択しようとしていますが、ループが最初の のみを出力することに混乱していますcurrent_episode

app.get('/episodes', function(req, res){
    fs.readFile('channels.json', 'utf8', function (err, data) {
        var jsondata = JSON.parse(data);
        for (var i=0; i<jsondata.channels.length; i++){
            var myChannel = jsondata.channels[i].current_episode;
            res.send(myChannel);
        }
    })
}); 

私のjsonデータ:

{
  "total": 70,
  "request_uri": "\/channels\/",
  "channels": [
    {
      "channel_id": 42,
      "current_episode": [
        {
          "id": 126248,
          "title": "Spanarna",
        }
      ]
    },
    {
      "channel_id": 43,
      "current_episode": [
        {
          "id": 126255,
          "title": "Beck: I stormens \u00f6ga",
        }
      ]
    },
............
}
4

5 に答える 5

7

res.sendデータを書き込み、リクエストを終了します。代わりにこれを試してください:

app.get('/episodes', function(req, res){
    fs.readFile('channels.json', 'utf8', function (err, data) {
        var jsondata = JSON.parse(data);
        res.writeHead(200, {'Content-Type': 'text/plain'});
        for (var i=0; i<jsondata.channels.length; i++){
            var myChannel = jsondata.channels[i].current_episode;
            res.write(JSON.stringify(myChannel));
        }
        res.end();
    })
}); 
于 2012-11-16T14:23:16.900 に答える
2

エピソードの文字列を作成してみてください。

app.get('/episodes', function(req, res){
    fs.readFile('channels.json', 'utf8', function (err, data) {
        var jsondata = JSON.parse(data),
            myChannel = [];
        for (var i=0; i<jsondata.channels.length; i++){
            myChannel.push( jsondata.channels[i].current_episode );
        }
        res.send( myChannel.join("\n") );
    })
});
于 2012-11-16T14:24:11.343 に答える
1

ループ内にres.send(myChannel) があるためです。res.send は最初のチャネルを見つけて送信し、次の res.send() の呼び出しを無視します。

これの代わりに、すべてのチャネルを文字列に連結し、ループの外でres.send(allChannels) を発行する必要があります。

于 2012-11-16T14:30:01.457 に答える
-1
function search_items( args ) { 
if ( args ) {       
    string = args.toLowerCase().replace(/"/g, "").replace(/'/g, "").split(" ");
    for ( var i=0, j=0; i<string.length; i++ ) {        
    (function(i){           

        vocabulary.findOne({word:string[i]}, function(error, search){ // find vocabulary info

        if ( !error && search ) {
j++;
        pages.findOne({voc_id:ObjectID(search._id)}, function(error, pages){ // find pages info

            if ( !error && pages ) {

            page_tokens.findOne({page_id:ObjectID(pages._id), voc_id:ObjectID(search._id)}, function(error, page_token){ // find page tokens info

                if ( !error && page_token ) {

                pos_tags.findOne({_id:ObjectID(page_token.pos_tag_id)}, function(error, pos_tag){ // find pos_tags info

                    if ( !error && pos_tag ) {

                    resultTotal.push({vocabulary:search.word, pages:{doc:pages.base_url+pages.path}, page_tokens:{sentence_number:page_token.sentance_number,token_position: page_token.token_position}, pos_tags: { tag:pos_tag.tag } });
                    j--;
                    console.log(j);
                    if ( j==0 ) {

                        res.json({success:resultTotal});

                    }

                    } else {
                    res.json({ error:true });                       
                    }           

                });

                } 

            });             
            }           
        });         
        }           
    });     
    })(i)       
    }
} 
}
于 2014-04-29T07:27:35.960 に答える