2017-05-08 7 views
0

をリセットします。私が抱えている問題は、メソッドが呼び出されるたびに、this.ratingsDataは空の配列にすぎないということです。以前の値はなんらかの理由で保存されません。したがって、私が得る平均は、常にメソッドに渡されるレーティングです。マングースフィールドには、私はこのようになりますマングーススキーマを持つ

私は間違っていますか?

+0

データベースにデータを挿入しようとしている場合はいずれかを実行挿入またはデータベースに保存します。イベントの前にデータを検索し平均値を計算しようとしています。私は保存機能がありません。 –

+0

dbに値を挿入して操作を実行することはできますが、同時に両方の作業をどのように達成しようとしているのかを理解できます。 –

答えて

1

あなただけのスキーマ・オブジェクトを保存していなかった、あなたはこのような何かが必要です。

shopSchema.methods.rate = function(rating, clb){ 
    this.ratingsData.push(rating); 
    this.rating = _.mean(this.ratingsData); 

    this.save(function(err, result){ 
     if(err) throw err; 
     return clb(result.ratingsData); 
    }) 
}; 

をしたりプロミスを使用する場合:

shopSchema.methods.rate = function(rating){ 
    this.ratingsData.push(rating); 
    this.rating = _.mean(this.ratingsData); 

    return this.save() 
    .then(result=>{ 
     return result.ratingsData 
    }) 
    .catch(err=>{ 
     throw err; 
    }) 
}; 
+0

これは、私が午前4時にコードしようとするとどうなりますか?私はこのようなことを逃す。とにかくありがとう。 – ninesalt

関連する問題