0

保存对象后,我想创建一个与第一个对象有关系的私有对象。我很好奇我是否应该使用 .afterSave 方法,或者第一个对象保存的成功回调中的东西。

如果我应该在 afterSave 方法中执行此操作,我不确定如何在不访问调试器的情况下获取对对象的引用——我假设request.object 是刚刚保存的对象?不用说,这段代码不起作用。它正在创建和保存两个对象,而不是两者之间的关系。

有任何想法吗?非常感谢。

Parse.Cloud.beforeSave("Subscription", function(request, response) {
 if (request.object.isNew()){
    request.object.set("url", Math.random().toString(36).substring(7));
    request.object.set("active", true);
    response.success();
 }
 else{
     response.error("Couldn't save Subscription for some reason. Sorry");
 }
});

Parse.Cloud.afterSave("Subscription", function(request,response){
//Add SubscriptionLog object to Subscription

var SubscriptionLog = Parse.Object.extend("SubscriptionLog");
var subscriptionLog = new SubscriptionLog();

subscriptionLog.save(null, {
    success: function(savedSL){
        //create relation of subscriptionLog to subscription
        var relation = request.object.relation("subscriptionLog");
        relation.add(subscriptionLog);
        relation.save();
    },
    error: function(error){
        console.log(error);
    }
  });
})
4

2 回答 2

1

我相信,由于每个 SubscriptionLog 似乎只有一个 Subscription,因此您只需要 SubscriptionLog 中的对象指针,而不是关系。只需将 objectID 分配给指针。

在 beforeSave 执行 response.success() 之前,Subscription 没有 objectID。所以至少,你需要在 response.success() 之后执行此操作。但是,我从未在 beforeSave 中检查过 objectID 是否可用,而是在调用之后。我在 afterSave 函数中进行分配。

于 2013-04-26T00:36:35.113 回答
0

您应该为此使用 afterSave 挂钩。刚刚保存的对象是request.object

您的 afterSave 挂钩格式错误 - 没有“响应”对象。正确的格式是:

Parse.Cloud.afterSave("Subscription", function(request) {
  // ...
});
于 2013-04-25T22:52:41.967 回答