2014-10-19 9 views
0

我有一個問題,我的回調,我不知道我怎麼回到它。Sailsjs find()回調動作

index: function(req, res,next) { 
    User.find().exec(function(err,users) { 
     if(err) { 
     //do something 
     } 
     res.locals.users = users 
     return true; 
    }); 

    Country.find().exec(function(err,countrys) { 
    //save country 
    } 

    console.log(res.locals.users) 
    res.view({ 
    users: res.locals.users, 
    country: countrys 
    user:res.locals.user 
    }); 
} 

我該如何訪問這兩個對象?

謝謝

回答

2

你的DB調用運行async,這意味着之前的數據可以被傳遞到他們的觀點被渲染。所以你必須以同步方式製作它們。這可以通過回調來achived或者你可以鏈中的功能,而不是回調,這樣,

index: function(req, res,next) { 
    User.find().exec(function(err,users) { 
    if(err) { 
    //do something 
    } 
    else{ 
     res.locals.users = users 
     Country.find().exec(function(err,countrys) { 
     if(err) { 
      //do something 
     } 
     else{ 
      console.log(res.locals.users) 
      res.view({ 
      users: res.locals.users, 
      country: countrys 
      user:res.locals.user 
      }); 
     } 
     } 
    } 
    }); 
} 

另一種方法是使用回調。

+0

感謝組織, 但如果我超過2 dbs電話,它會得到否則如果其他,否則,這對我不乾淨? 它不可能退貨嗎? – joe69 2014-10-19 12:35:30

+0

@ joe69現在檢查! – Ravi 2014-10-19 12:49:14

+0

但是,如果我想要超過2分貝的電話 User.find()... {else Country.find().. {else Home.find()... {else Pet.find()}}}} 這並不美麗。 這是唯一的方法或我可以映射的東西或額外的功能來獲取數據? – joe69 2014-10-19 12:53:12