2016-09-17 6 views
0

Ich benutze Parse-Plattform als Backend, und ich habe Beiträge und Medien Klassen. jeder (img, Datei, ....) in Parse-Objekt innerhalb Media Klasse, und jeder hat Spalte mit Zeiger auf Post-Objekt von Posts-Klasse.Abfrage von verschiedenen Klassen

Ich versuche, alle Beiträge mit Medien für jeden Beitrag zu bekommen, wie kann ich es mit einer Abfrage tun?

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); 
    }); 

Antwort

0

Der beste Ansatz one to many Beziehung zwischen dem Beitrag der Medien, so dass jeder Beitrag enthält mehrere Medien Objekte haben und dann können Sie den folgenden Code, um alle Beiträge zu bekommen verwenden mit darunter alle Medien ..

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 
 
});

können Sie mehr über Parse Beziehungen lesen in here

+0

Dank lief, die Antwort zurück Medien feild wie diese "Medien": {"__type": "Relation", "Klassenname": "Medien"} Wie kann ich den Inhalt in den Medien bekommen? –

+0

In Ihrer Mediendatei haben Sie die Medien-URL (in einer Zeichenfolge). Nehmen Sie diese Zeichenfolge, erstellen Sie NSURL daraus und holen Sie die Daten dann entweder über NSURLConnection oder über die Bibliothek (z. B. AFNetwork, Almofire usw.). –

Verwandte Themen