2014-03-24 1 views
0

두 가지 모델 User and Friend가 있습니다. 친구에서 내가 2 열 (USERID1, USERID2) 나는 USERID1은 내가여러 모델에서 Sails.js의 자바 스크립트로 테이블을 반환하는 방법

index: function(req, res, next) { 

    Friend.find({UserId1 : req.session.User.id}, function foundUsers(err, friends) { 
    if (err) return next(err); 
    // pass the array down to the /views/index.ejs page 
    res.view({ 
     friends: friends 
    }); 
    }); 
} 

식 USERID2으로 사용자와 테이블을 반환하려면이 행이 테이블에서 다음 지정 및 위치를 친구 행을 찾으려면 있어 위의 코드는 UserId1이 지정된 Friends (UserId1, UserId2)와 함께 테이블을 반환하지만 Id가 UserId2 인 Users (모델 User에서)와 함께 테이블을 반환하는 방법 ??

답변

2

두 사용자 간의 우정을 나타내는 조인 테이블로 Friend 모델을 사용하고있는 것처럼 들립니다. 현재 코드에있는 쿼리는 로그인 한 사용자의 ID 인 UserId1이있는 조인 테이블의 모든 레코드를 가져오고 해당 레코드 각각에 대해 id가 일치하는 사용자에 대해 전체 User 개체를 가져 오려고합니다 UserId2 칼럼 이 경우, 전체 코드가 될 수있는 일 같은 :

index: function(req, res) { 

    Friend.find({UserId1 : req.session.User.id}) 
    .exec(function foundUsers(err, friend_records) { 

     if (err) return res.serverError(err); 

     // Get an array of all the UserId2 values, using sails.util.pluck, 
     // which is essentially Lodash's _.pluck 
     var friend_ids = sails.util.pluck(friend_records, 'id'); 

     // Get the User records for those users. Using an array 
     // in the criteria makes Waterline do an "in" query 
     User.find({id: friend_ids}).exec(function(err, friends) { 

      // pass the array down to the /views/index.ejs page 
      res.view({ 
       friends: friends 
      }); 

     }); 

    }); 

} 

노트의 몇 :

  • 당신은 거의 특히 오류 처리, 컨트롤러 코드에서 next를 사용해서는 안됩니다. 오류가 있으면 응답을 사용하여 처리하십시오. 실제적으로 다른 컨트롤러가 응답을 보내려고하지 않는 한 에 대해 next을 저장하십시오.
  • Sails v0.10 (현재 베타 버전)에는 support for associations이 포함되어 있으며,이 테이블은 사용자의 조인 테이블을 처리합니다.