Parse.com 在保存前将用户指针添加到 class

Parse.com Add User Pointer to a class in before save

我有一个名为 Roster 的 table,它在其中一列中存储了一个用户指针。我正在尝试在保存方法之前设置该列,当时它是 new.So 到目前为止我有这个但我不确定如何获取用户 ID

Parse.Cloud.beforeSave("Roster",function(request,response){
  //Update roster with sender Id
  if (request.object.isNew()){
    var userPointer = /*NOT SURE HOW TO GET WHO SENT IT*/
    request.object.set("User",userPointer);
  }
   response.success(); 
});

有什么想法吗?

正如 Jake T 指出的那样,您将需要使用

var user = request.user

Parse.User.current() 在云代码环境中不受支持。

var userPointer = request.user;

是正确的方法。托德的答案适用于客户端,但不适用于发生 beforeSave 触发器的云代码。

如果您需要访问用户 ID 以外的任何用户信息,您必须首先获取用户,因为请求中不会发送整个对象。

编辑 - 只是想补充一点 before/afterSave 触发器有 3 秒超时。这段时间足以执行一两次快速查询,但如果您的数据库中有很多对象,或者执行许多 save/fetch/query 调用,您最终可能会超过 3 秒的限制。如果你有很多需要发生的逻辑,而不是从客户端保存对象,调用一个云代码函数来处理所有这些变化,然后保存对象和 returns 新保存的对象,所以您可以将客户端对象设置为返回的最新对象。