2017-09-24 8 views
0

ログインしているユーザ(user_id)が参加者であるすべてのチャットの会話を返信したい。Mongoosejs - 入力結果をフィルタにかけること

私は、参加者をpopulateしてprofile.firstname(多分もう少し後で)を返すだけです。参加者の配列にloggedInUser(user_id)を戻さないように参加者を除外します。 populate documentationこれによると

chat.controller.js INDEX

Chat.find({participants: user_id}) 
      .populate('participants', { 
       select: 'profile.firstname', 
       where('_id').ne(user_id) // This need to change 
      }) 
      .exec(function (err, chats) { }); 

chat.model.js

const mongoose = require('mongoose'); 
const Schema = mongoose.Schema; 

let ChatSchema = new Schema({ 

     participants: [{ 
      type: Schema.Types.ObjectId, ref: 'User' 
     }], 

     messages: [{ 
      type: Schema.Types.ObjectId, ref: 'Message' 
     }], 

    }, 
    { 
     timestamps: {createdAt: 'created_at', updatedAt: 'updated_at'} 
    }); 

module.exports = mongoose.model('Chat', ChatSchema); 

答えて

0

は "一致" オプションで達成することができました。

あなたのケースでは答えは次のようになります。

Chat.find({participants: user_id}) 
     .populate('participants', { 
      select: 'profile.firstname', 
      match: { _id: {$ne: user_id}} 
     }) 
     .exec(function (err, chats) { }); 
関連する問題