2017-05-04 7 views
0

express/handlebars/mongooseで友達システムを作成する。私は{{friends.length}}を使用してユーザーの総数を表示していますが、友人の総数をどのように表示しますか?例えば。 1 =の友人私はモンゴ/マングースを介してのカウントを取得するにはどうすればよいexpress/handlebars/mongooseの特定の値のオブジェクトのプロパティをカウントする

保留0または1

0 =の状態を持っているどのように多くの友人たちの

var UserSchema = new Schema({ 
 
    username : String, 
 
\t friends : [{ id: { type: Schema.Types.ObjectId, ref: 'User'}, status: Number }] 
 
}); 
 

 
app.get('/:username/friends', function(req, res) { 
 
    User 
 
    .findOne({ username: req.params.username }, 'username friends') 
 
    .populate({ 
 
    path: 'friends.id', 
 
    model: 'User', 
 
    select: 'username' 
 
    }) 
 
    .exec(function(err, user) { 
 
    res.render('friends', user) \t \t \t 
 
    }) 
 
});

{ 
 
     "_id" : ObjectId("590ac6b7663350948be1c085"), 
 
     "username" : "some username", 
 
     "friends" : [ 
 
      { 
 
       "id" : ObjectId("590ac6ac663350948be1c083"), 
 
       "status" : 1, 
 
       "_id" : ObjectId("590ace171aa0aeb58f798466") 
 
      } 
 
     ] 
 
    }

答えて

1

私は右のあなたがそれのためにフィルタを使用することができますので、あなたはすべてのお友達の配列を持っている、あなたを理解していれば:

friendsType1 = friends.filter(friend=>friend.satatus===0); 
friendsType2 = friends.filter(friend=>friend.satatus===1); 
friendsType1.length;//total count friends with status 0 
friendsType2.length//total count friends with status 1 

の下であなたができるUserSchemaメソッド宣言:私はマングースではなく、JSでこれを行うことができますどのように

app.get('/:username/friends', function(req, res) { 
    User.findFriends(req.params.username, function(err, users){ 
    if(err) throw err; 
    res.render('friends', users); 
    }); 
}); 
+0

//find friends with status 1 UserSchema.statics.findFriends = function (username, clb){ mongoose.models.User .findOne({ username: req.params.username }, 'username friends') .populate({ path: 'friends.id', model: 'User', select: 'username' }) .exec(function(err, user) { if(err) return clb(err); var result = user.friends.filter(friend=>friend.satatus===1); clb(null, result); }) } 

を次に、あなたがこのようにそれを使うことができますか? – totalnoob

+0

ユーザースキーマのメソッドを記述できます。 User.methods.findFriends = (ステータス)=> {...}; – Sergaros

+0

nice!それであなたの答えを更新できるなら、私はあなたのものを選ぶでしょう。ありがとう、 – totalnoob

関連する問題