2016-09-13 35 views
0

varの友人のINDEX関数に問題があります。私は空の配列に最初に設定して、ユーザーの友情結合表から個々のユーザーオブジェクトを前記配列にプッシュできるようにします。これは、サインインしたユーザーが、フレンドシップを開始したユーザーに応じて、ユーザーID列またはフレンドID列のフレンドシップ結合表に存在する可能性があるためです。Sequelize:結合テーブルの問題と結果のクエリ

問題は非同期な性質のため、私はconsole.log(友人)と呼ぶと、データベースのクエリはミリ秒遅れているため、まだ空の配列を記録しています。私はこの配列に、バックエンドAPIからJSONを提供する "myfriends"インデックスページとなる、現在のユーザーではないユーザーオブジェクトでいっぱいにしたいと考えています。私がJsonに奉仕しようとしているという事実を覚えておいて、すべての友人ユーザオブジェクトは1つの配列に終わらなければなりません。

ありがとうございます!

var user = require( "../../ models/index")。ユーザー。 var friendship = require( "../../ models/index")。友情。

var friendshipController = { 
    index: function(req, res) { 
    var friends = []; 
    var request = friendship.findAll({ 
     where: { 
     status: "pending", 
     $and: { 
      $or: [ 
      { 
       userId: req.session.user.id 
      }, 
      { 
       friendId: req.session.user.id 
      } 
      ] 
     } 
     } 
    }).then(function(friendships) { 
     res.json(friendships) 
     var friends = [] 
     friendships.forEach(function(friendship) { 
     if (req.session.user.id === friendship.userId) { 
      user.findById(friendship.friendId).then(function(user) { 
      friends.push(user); 
      }) 
     } else { 
      user.findById(friendship.userId).then(function(user) { 
      friends.push(user); 
      }) 
     } 
     }) 
     console.log(friends); 
    }) 
    }, 
    create: function(req, res) { 
    friendship.create({ 
     userId: req.session.user.id, 
     friendId: 3, 
    }).then(function() { 
     res.redirect("/") 
    }) 
    }, 
    destroy: function(req, res) { 
    friendship.findAll().then(function(f) { 
     f.forEach(function(fn) { 
     fn.destroy() 
     }) 
    }) 
    } 
} 

module.exports = friendshipController; 

答えて

0

SOLUTION:各友情のために、配列にログインしているユーザーの各隣接友人のidを押す... THEN応え、その後、その配列(どうやらsequelizeの機能)のすべてのユーザーを見つけるために、クエリを実行しますそのjsonデータで

index: function(req, res) { 
    var friends = []; 
    var query = friendship.findAll({ 
     where: { 
     status: "pending", 
     $and: { 
      $or: [ 
      { 
       userId: req.session.user.id 
      }, 
      { 
       friendId: req.session.user.id 
      } 
      ] 
     } 
     } 
    }).then(function(friendships) { 
     var friendIds = []; 
     friendships.forEach(function(friendship) { 
      if (req.session.user.id === friendship.userId) { 
      friendIds.push(friendship.friendId); 
      } 
      else { 
      friendIds.push(friendship.userId); 
      } 
     }); 
     user.findAll({ 
      where: { 
      id: friendIds 
      } 
     }).then(function(users) { 
      res.json(users); 
     }) 
    }) 
    } 
関連する問題