2016-09-17 6 views
0

私はバックエンドとしてParseプラットフォームを使用しています。私は投稿を持っています。メディアクラスです。 メディアクラス内の各オブジェクト(img、file、....)は、それぞれPostクラスのPostオブジェクトへのポインタを持ちます。異なるクラスからのクエリ

私は各投稿のメディアを含むすべての投稿を取得しようとしていますが、どのように1つのクエリでそれを行うことができますか?

var Posts = Parse.Object.extend("posts"); 
    var query = new Parse.Query(Posts); 
    var newObject = []; 
    query.find().then(function(data){ 

     for (var i = 0; i < data.length; i++) { 
      var item = data[i].toJSON(); 
      var newData = {}; 
      newData.objectId = item.objectId; 
      newData.user = { 
       userId: item.user.objectId, 
       fullName: item.user.fullName, 
       picture: item.user.imageUrl, 
       userName: item.user.userName, 
      }; 
      newData.date = item.createdAt; 
      newData.hasImages = item.hasImages; 
      newData.postBody = item.postBody; 
      if(item.hasImages){ 
       var Media = Parse.Object.extend("media"); 
       var mediaQuery = new Parse.Query(Media); 
       mediaQuery.limit(10); 
       mediaQuery.descending("createdAt"); 
       mediaQuery.matches("post", item.objectId); 
       mediaQuery.find().then(function(data){ 
        newData.images = data; 
       }); 
      } 
      newObject.push(newData); 
     } 
     console.log(newObject); 
    }); 

答えて

0

最善のアプローチは、その各ポストは、複数のメディアオブジェクトが含まれ、その後、あなたが持つすべての記事を取得するために、次のコードを使用することができますメディアのポスト間の一対多の関係を持つことになりますその下にあるすべてのメディア..

var Posts = Parse.Object.extend("posts"); 
 
var query = new Parse.Query(Posts); 
 

 
// add some coditions to the Posts query here if needed 
 

 
query.include("media"); // include the media relation (0..n) 
 

 
// if you want to fetch only posts that have media under it you can use the following line of code 
 
query.exists("media"); // make sure that only posts with media will be populated 
 

 
query.find().then(function(posts){ 
 
    
 
    // here you have the list of posts 
 
    // in order to access property of a post you can use the following code: 
 
    
 
    for (var i=0;i < posts.length;i++){ 
 
    var post = posts[i]; 
 
    var postMedia = post.get("media"); // get all media objects in a specific post 
 
    //.. 
 
    } 
 
    
 
},function(error){ 
 
    // error 
 
});

あなたはパースの関係についての詳細を読むことができます

+0

ありがとうございました。応答はメディア "media"のように返されます:{"__type": "Relation"、 "className": "media"} どのようにしてメディア内のコンテンツを取得できますか? –

+0

メディアファイルにメディアURL(文字列)があります。この文字列を使ってNSURLを作成し、NSURLConnectionまたはライブラリ(AFNetwork、Almofireなど)を使用してデータを取得します。 –

関連する問題