我试图循环浏览一个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",
}
]
},
............
}
答案 0 :(得分:5)
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();
})
});
答案 1 :(得分: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") );
})
});
答案 2 :(得分:1)
因为你在循环中有res.send(myChannel) 。 res.send正在发送第一个通道,并忽略对res.send()的下一次调用。
除此之外,你应该将所有频道连接成一个字符串,并在循环外发出res.send(allChannels) 。
答案 3 :(得分:0)
我发现最简单的方法是:
您可以尝试以下操作,但它也会将所有密钥加载到内存中
Object.keys(o).forEach(function(key, index, originalObject) {
var val = o[key];
logic();
});
但是,由于Object.keys是一种原生方法,因此可以实现更好的优化。
虽然这是我一直在做的代码,但我在这里找到了这个(稍微透明的代码),同时检查这是否是最佳的做事方式:Iterate over object keys in node.js
答案 4 :(得分:-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)
}
}
}