2016-06-01 5 views
1

Ich versuche hier relationale Abfrage zu verwenden. Ich habe 'Post' Tabelle und 'Kommentar' Tabelle. Ich möchte, dass alle Kommentare post_id aus der Post-Tabelle haben und auch alle Posts, die mit dieser Post-ID von Post-Tabelle verwandt sind. Ich habe post_id Zeiger hier gemacht. Soweit, was ich getan habe, ist, dass ich Kommentare mit dieser Post-ID erhalten kann, aber ich kann keine Post von dieser Post-Tabelle mit dieser Post-ID erhalten. Hier ist, was ich bisher getan haben:Wie zwei Abfrageergebnisse verschiedener Tabellen zu einer Abfrage in Parse kombinieren?

Parse.Cloud.define("getAllPost", function (request, response) 
 
{   
 
    var Post = Parse.Object.extend("mst_Post"); 
 
    var Comment = Parse.Object.extend("mst_Comment"); 
 
    var innerQuery = new Parse.Query(Post); 
 
    innerQuery.exists("objectId"); 
 

 
    var query = new Parse.Query("mst_Comment"); 
 
    query.matchesQuery("post_id", innerQuery); 
 
query.find 
 
({ 
 
    success: function(result) 
 
    { 
 
     response.success(result); 
 
    } 
 
});

Wie erhalte ich Beiträge auch dies mit, dass gleiche post_id aus der Tabelle Beitrag enthält. Jede Hilfe würde geschätzt werden. Hinweis: Bitte schlagen Sie keine Abfrage. Oder, da es nur Daten aus der gleichen Tabelle nimmt, und in meinem Fall gibt es zwei verschiedene Tabellen. Hinweis:

error : code": 141, 
 
    "error": "Error: Tried to encode an invalid date. for (j = 0; j < commentResult.length; j++) 
 
         { 
 
          var comment_post_id = commentResult[j].get("post_id").id; 
 
          var comment_date = commentResult[j].createdAt; 
 
          var extract_Date =new Date(comment_date.iso) 
 
          var comment_id = commentResult[j].id; 
 
          if (comment_post_id == post_id) { 
 
           var tempArr = { 
 
            comment_id : comment_id, 
 
            comment: commentResult[j].get("comment"), 
 
            comment_location: commentResult[j].get("comment_location"), 
 
            Comment_Date : extract_Date 
 
           } 
 
           commentArr.push(tempArr); 
 
          } 
 
         }

Antwort

1

Fasse zusammen, was Sie wollen.

Sie möchten Kommentare und ihren Beitrag erhalten. Jeder Kommentar hat einen Zeiger namens "post_id"

Verwenden Sie einfach, so dass Parsen verwandte Post-Daten in das zugehörige Feld erhalten.

Parse.Cloud.define("getAllPost", function (request, response) 
{   
    var Post = Parse.Object.extend("mst_Post"); 
    var Comment = Parse.Object.extend("mst_Comment"); 
    var innerQuery = new Parse.Query(Post); 
    innerQuery.exists("objectId"); 

    var query = new Parse.Query("mst_Comment"); 
    query.matchesQuery("post_id", innerQuery); 
    query.include("post_id"); 
query.find 
({ 
    success: function(result) 
    { 
     //console.log(result[0].get('post_id').get('XXX in post')); 
     response.success(result); 
    } 
}); 

Referenz https://parse.com/docs/js/guide#queries-relational-queries


aktualisiert Teil

Wenn Sie createdAt von Paras.Object erhalten möchten, verwenden Sie einfach obj.createdAt nicht verwenden obj.get ("createdAt").

Wenn Sie das Ergebnis Datumstyp transformieren möchten,

new Date (obj.get ("comment_date"). Iso)

der String in Comment_Date.iso ist zu Date-Objekt

konvertierbar
+0

Hallo ChunTIngLin, Danke für deine Antwort. Wie von Ihnen vorgeschlagen, habe ich in meinem Code enthalten. Es gibt mir Aufzeichnungen, aber nicht so, wie ich es wollte. Eigentlich möchte ich alle Datensätze aus 'Post' Tabelle und nur übereinstimmende Post-ID-Datensätze aus 'Kommentar' Tabelle. Ich weiß, dass ich sehr nah dran bin. Aber nicht in der Lage, es herauszufinden. Warte auf deine aktualisierte Antwort. Danke –

+0

Ein Kommentar nur, um ein Post Objekt, richtig? Ich kann nicht verstehen, was du meinst "Alle Einträge von" Post "-Tabelle und nur übereinstimmende Post-ID-Datensätze aus" Kommentar "-Tabelle" – ChunTingLin

+0

Oder möchten Sie alle Kommentare für 1 oder mehr Posts? – ChunTingLin

Verwandte Themen