2016-12-24 5 views
1

JSONデータを作成していますが、私のデータのsubプロパティを変更する際に問題があります。Nodejs:別のパラメータで関数を2回呼び出す方法は?

私の最初の約束事は、各オブジェクトのsubプロパティに値theonionを含めることです。 2番目の約束のために、私はそれがnottheonionであることを望みます。しかし、両方のファイル(onion.jsonとnottheonion.json)は同じになり、どちらもr/nottheonionのデータを含んでいます

ここは私のコードです。

function parse(html, subreddit) { 
    var $ = cheerio.load(html); 

    $("div#siteTable > div.link").each(function(idx) { 
     var title = $(this).find('p.title > a.title').text().trim(); 
     posts.push({ sub: subreddit, content: title }); 
    }); 

    var posts_as_json = JSON.stringify(posts); 
    return posts_as_json; 
} 

var append = file => content => fsp.appendFile(file, content); 

rp(onion_url) 
    .then(html => parse(html, "onion")) 
    .then(append('onion.json')) 
    .then(() => console.log('Onion Success')) 
    .catch(err => console.log('Error: ', err)); 

rp(not_onion_url) 
    .then(html => parse(html, "nottheonion")) 
    .then(append('not_onion.json')) 
    .then(() => console.log('Not Onion Success')) 
    .catch(err => console.log('Error: ', err)); 
+0

を?どちらの約束事も同じ「投稿」配列を共有していることはご存じですか? – Thomas

答えて

0

このお試しください: `宣言posts`さ

function parse(html, subreddit) { 
    var p = subreddit; 
    var $ = cheerio.load(html); 

    $("div#siteTable > div.link").each(function(idx) { 
     var title = $(this).find('p.title > a.title').text().trim(); 
     posts.push({ sub: p, content: title }); 
    }); 

    var posts_as_json = JSON.stringify(posts); 
    return posts_as_json; 
} 
+0

それは動作します。私が意図したものではありませんが、r/theonionとr/nottheonionの両方にJSONファイルを1つだけ入れることができます。これは、そのコードが行うことです。両方のサブディレクトリからのデータを含む両方のファイルを書き込みます。ありがとう。 – user298519

+0

私はわかりませんが、var append = file => content => fsp.appendFile(file、content);私に間違って見える.....それはvarではないはずですappend =(file、content)=> fsp.appendFile(file、content);直前のコールバックの内容を渡します –

関連する問題