2016-09-17 1 views
0

Я использую платформу Parse в качестве backend, и у меня есть Сообщения и Media классы. каждый (img, file, ....) в объекте Parse внутри класса Media, и каждый из них имеет столбец с указателем на объект Post из класса Posts.Запрос от разных классов

Я пытаюсь получить все сообщения со СМИ для каждого сообщения, как я могу сделать это с одним запросом?

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

Наилучший подход будет иметь один ко многим отношений между Почтой СМИ, так что каждый сообщение содержит несколько медиа объектов, а затем вы можете использовать следующий код для того, чтобы получить все сообщения с все Medias под ним ..

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

Вы можете прочитать больше об отношениях PARSE in here

+0

С уважением Ran, ответ, возвращающий медиа, как этот «медиа»: {«__type»: «Relation», «className»: «media»} Как я могу получить контент внутри медиа? –

+0

В медиафайле есть медиа-URL (в строке). Возьмите эту строку, создайте из нее NSURL, а затем извлечете данные либо через NSURLConnection, либо через библиотеку (например, AFNetwork, Almofire и т. Д.), –

 Смежные вопросы

  • Нет связанных вопросов^_^