2016-08-24 68 views
0

我有一個PFUser,它與DayPFObject的關係爲days獲取PFObject雲代碼的關係

在我的數據庫,它看起來是這樣的:

{ 
    "_id": "WjLAnMuRmp", 
    "name": "c", 
    "_created_at": { 
     "$date": "2016-08-04T15:28:51.759Z" 
    }, 
    "_updated_at": { 
     "$date": "2016-08-24T19:44:44.774Z" 
    }, 
    "days": [ 
     { 
      "__type": "Pointer", 
      "className": "Day", 
      "objectId": "BrQwmKAbJC" 
     }, 
     { 
      "__type": "Pointer", 
      "className": "Day", 
      "objectId": "6wuDMl4kKI" 
     } 
    ] 
} 

漂亮的直線前進。在我的雲代碼中,我試圖發送一個PFUserobjectId,然後獲取它們所有的days並遍歷它們。由於一些奇怪的原因,當我做關係查詢時,我一直得到0。

這裏是我的工作:

Parse.Cloud.define("getDayAveragesForUser", function(request, response) { 

    console.log("-getDayAveragesForUser"); 

    // Create the query on the User class 
    var fetchedUser = new Parse.User({id:request.params.userObjectId}); 

    console.log("the fetched user: " + fetchedUser.id); 

    var relation = fetchedUser.relation("days"); 

    var query = relation.query(); 
    query.limit(365); 
    query.ascending("createdAt"); 
    query.find({ 
    success: function(results) { 
     console.log("Successfully retrieved " + results.length + " Days."); 
    }, 
    error: function(error) { 
     console.log("Error: " + error.code + " " + error.message); 
    } 
    }); 
}); 

當我打印fetchedUser.id它是正確的,所以我知道我在正確的用戶。這似乎基於文檔示例:

var relation = user.relation("likes"); 
relation.query().find({ 
    success: function(list) { 
    // list contains the posts that the current user likes. 
    } 
}); 

這應該工作正常。

===

我要對我的雲代碼添加到測試:

var days = fetchedUser.get("days"); 

    console.log("type of: " + typeof days); 

從這個我得到:

type of: undefined 

回答

1

的原因是,你的日子還沒有保存爲關係,但作爲指針。而在解析關係和指針時則以不同的方式處理。 爲了指針,你需要改變你的查詢,如下所示去取天:

var userQuery = new Parse.Query(Parse.User); 
 
userQuery.include("days"); // include the days pointer in the results 
 
userQuery.get(request.params.userObjectId, { 
 
    success: function(user) { 
 
    // This function will *not* be called. 
 
    console.log(user.get("days")); // print the days to console 
 
    }, 
 
    error: function(error) { 
 

 

 
    } 
 
});