保存对象后,我想创建一个与第一个对象有关系的私有对象。我很好奇我是否应该使用.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);
}
});
})
答案 0 :(得分:1)
我相信,由于您似乎每个SubscriptionLog只有一个订阅,因此您只需要在SubscriptionLog中使用对象指针,而不是关系。只需将objectID分配给指针即可。
在beforeSave执行response.success()之前,Subscription没有objectID。所以至少,你需要在response.success()之后这样做。但是,我从未检查过beforeSave中是否有objectID,但是在调用之后。我在afterSave函数中进行赋值。
答案 1 :(得分:0)
你应该使用afterSave钩子。刚刚保存的对象是request.object
。
您的afterSave挂钩格式错误 - 没有“响应”对象。正确的格式是:
Parse.Cloud.afterSave("Subscription", function(request) {
// ...
});