获取PFObject云代码的关系

Fetching relation to PFObject cloud code

本文关键字:关系 代码 PFObject 获取      更新时间:2023-09-26

我有一个PFUser,它与Day PFObjectdays关系。

在我的数据库中是这样的:

{
    "_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"
        }
    ]
}

非常直接。在我的云代码中,我试图发送一个PFUser objectId,然后获取他们拥有的所有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

原因是您的日期不是保存为关系,而是保存为指针。在解析中,关系和指针以不同的方式处理。为了获取天数指针,您需要更改查询,使其看起来像下面这样:

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