2017-04-22 11 views
0

私は自分のmongo dbから取得するので、投稿した各ユーザーにスコアを割り当てようとしています。私は全体のプロセスを通過し、正常に投稿オブジェクトの新しい配列に 'スコア'プロパティを追加します。さて、私はそのスコアに基づいて投稿を並べ替えたいです。私は単純な比較関数を使用しようとしていますが、私のコードはこの関数を打つさえないようです。マップ関数の後にコードが自分のソート関数をスキップするのはなぜですか?

エラーや何かがコンソールに出力されていません。私が得るのはスコアプロパティが割り当てられた配列内の投稿オブジェクトだけです。

コードがこの並べ替え機能をスキップしているのはなぜですか?

ありがとうございます。

postDB.connect 
.then(db => db.collection("posts").find().forEach(function(posts) { 


    var postsArr = []; 
    postsArr.push(posts); 


    function generateScore(postWithoutScore) { 


     var timeSince = (((Date.now()/1000) - postWithoutScore.e) * 0.000277778); 

     var hh = ((postWithoutScore.upvote - 1)/Math.pow(timeSince + 2, 1.8)).toFixed(2); 

     return hh; 
    } 

    var postsWithScore = postsArr.map(function(post) { 
     // console.log(post); 
     return Object.assign({}, post, { 
      score: generateScore(post) 
     }) 
    }); 


    postsWithScore.sort(function (a, b){ 

     console.log(b); 
     console.log(a); 

     return b[i].score - a[i].score; 

    }); 

    console.log(postsWithScore); 


    }) 
    .then(posts => { 
     console.log(posts); 
     res.render("projects", { 
      posts: posts 
     }) 
    }) 
    .catch(next)) 
    }); 
+0

あなたは 'console'でエラーになっていますか? 'i'のようなものは未定義です。 –

+1

'i'はソートコールバックで定義されていません。あなたのコンソールログは、 'a.score'と' b.score'を使用して提案する必要があります – charlietfl

+0

私は関数から何も得ていません...何を入れても問題ありません。何も出力しません。エラーはありません。私はそれがヒットしていないことがポジティブです。 –

答えて

0

私はあなたのコードは、構文に誤りがあると思う - ブラケットは多分....私はあなたには、いくつかの出力作業を取得かどうかを確認、以下のことを再配置しようとした、間違った場所にあります。

postDB.connect 
.then(db => db.collection("posts").find().forEach(function(posts) { 

    var postsArr = []; 
    postsArr.push(posts); 


    function generateScore(postWithoutScore) { 


     var timeSince = (((Date.now()/1000) - postWithoutScore.e) * 0.000277778); 

     var hh = ((postWithoutScore.upvote - 1)/Math.pow(timeSince + 2, 1.8)).toFixed(2); 

     return hh; 
    } 


    var postsWithScore = postsArr.map(function(post) { 
     // console.log(post); 
     return Object.assign({}, post, { 
      score: generateScore(post) 
     }) 
    }); 

    postsWithScore.sort(function (a, b){ 

     console.log(b); 
     console.log(a); 

     return b[i].score - a[i].score; 

    }); 

    console.log(postsWithScore); 


    } 
) 
) 
.then(posts => { 
     console.log(posts); 
     res.render("projects", { 
      posts: posts 
     }) 
    }) 
.catch(next); 
関連する問題