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 新保存的对象,所以您可以将客户端对象设置为返回的最新对象。
我有一个名为 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 新保存的对象,所以您可以将客户端对象设置为返回的最新对象。