2016-10-14 11 views
0

私はsails.jsとMongoDBの初心者です。私の質問を読んでくれてありがとう。Sails.js waterline defered

私は本当に問題を抱えています。


状況

私はユーザーデシベル、レポートデシベル、ポストデシベルを持っています。

親がレポートデータであるレポートデータとポピュレートされた投稿データを取得したいと考えています。私はまた、ポストデータからユーザーデータを取得したい。

つまり、ダブルネストされたデータを取得したいと考えています。

 
Report 
    |_ post 
     |_user 

そして、これは私が私のコンソールでは、私のコードを実行

findReports: function(req, res) { 
    Report.find().populateAll().sort({createdAt: -1}).exec((er, reports) => { 
     if (er) return res.negotiate(er) 
     const rs = reports 
     console.log('rs : ', rs) 
     rs.forEach((report) => { 
     if(report.post) { 
      User.findOne({id: report.post.user}).exec((er, user) => { 
      report.post.user = user 
      console.log("before rs : ", rs) 
      }) 
      console.log("report.post.user : ", report.post.user) 
      console.log("after rs : ", rs) 
     } else { 
      report.comment.user = User.findOne({id: report.comment.user}).exec((er, user) => { 
      report.commet.user = user 
      }) 
     } 
     }) 
     console.log("final rs : ", rs) 
     res.view('dashboard/reports/index', { reports: rs }) 
    }) 
    }, 

ReportController.js

の私findReportsアクションですが、結果は次の順番によるプリントされています。 "RSの後..(何とか).."

  1. - 私はしたくない...
  2. "最終RS ..(何とか).." - 私はしたくありません...
  3. "前にrs:..(blah).." - 私はこのrsを取得したい!しかし、私のres.view( "ダッシュボード...."、{レポート、rs})は2の結果です。

「User.find」メソッドがロジック全体とは無関係であると思われます。

本当に困っています。アドバイスは本当に役に立ちます。どうかアドバイスをお願いします。

答えて

0

水線フォームSailsJSはdeepPopulationをサポートしていません。だからではなく、ORMのあなたは別のようなを使用する必要があります。Offshore

例:

Report.find().populate("post.user").exec((err, data) => { 
// ur code here 
}) 
関連する問題