Parse.com 云代码 afterSave() 错误:“未捕获尝试使用指向新的未保存对象的指针保存对象。”
Posted
技术标签:
【中文标题】Parse.com 云代码 afterSave() 错误:“未捕获尝试使用指向新的未保存对象的指针保存对象。”【英文标题】:Parse.com Cloud Code afterSave( ) Error: "Uncaught Tried to save an object with a pointer to a new, unsaved object." 【发布时间】:2014-12-23 03:01:43 【问题描述】:上下文
我在后端之后使用 Parse.com 用于 Web 应用程序。我遇到的问题与 Cloud Code 有关。
在用户完成他们的个人资料后,我想调用一个 afterSave( ) 函数,该函数更新数据集 MY_TABLE 中的一些字段。
正在更新的字段(variable01、variable02 和 variable03)是通过函数 MY_FUNCTION 检索到的,输入为 param01 和 param02。
错误
我收到以下错误,无法修复:“Uncaught Tried to save an object with a pointer to a new, unsaved object.”
代码
Parse.Cloud.afterSave("PROFILE_COMPLETE", function(request)
// Use Master Key
Parse.Cloud.useMasterKey();
// Identify Parameters in Request
var param01 = request.user.get('param01');
var param02 = request.user.get('param02');
// Print Parameters to Console
console.log("Parameter 01 (" + param01 + ") successfully identified");
console.log("Parameter 02 (" + param02 + ") successfully identified");
// Identify Variables by Calling MY_FUNCTION()
Parse.Cloud.run('MY_FUNCTION', param01: param01, param02: param02,
success: function(results)
// Print Results
console.log("Function MY_FUNCTION() returned successful response");
console.log(results);
// Print Result Variables
console.log("Identified variable01 = " + results.variable01);
console.log("Identified variable02 = " + results.variable02);
console.log("Identified variable03 = " + results.variable03);
// Do I need to extend MY_TABLE or something else here???
// I am doing the update and save wrong...
// Update 'Complete' Data
request.object.set("variable01", results.variable01);
request.object.set("variable02", results.variable02);
request.object.set("variable03", results.variable03);
// Save Variables to 'MY_TABLE'
request.object.save(null,
success: function(results)
console.log("Variables successfully updated in MY_TABLE dataset");
console.log(results);
,
error: function(error)
console.log("Error when saving variables in MY_TABLE dataset");
console.log("Error " + error.code + ": " + error.message);
)
,
error: function(error)
console.log("There was an error when running function MY_FUNCTION()");
console.log(error);
);
);
【问题讨论】:
也许不是request.object.save
,只是response.success
。
Parse.Cloud.afterSave( ) 没有作为函数语法的一部分调用的“响应”:parse.com/docs/cloud_code_guide#functions-aftersave
【参考方案1】:
您的描述中可能缺少一些信息,但我希望我以前的经验可以帮助:
上次我收到此错误时,我正在执行以下操作:
上下文:在结果变量为res
的查询回调中
var MyParseClass = Parse.Object.extend("MyParseClass");
var newObject = new MyParseClass();
res.set("pointerFieldToMyParseClass",newObject);
res.save();
在这个例子中,newObject
在这个函数的作用域之外是不存在的,所以你必须先保存它:
var MyParseClass = Parse.Object.extend("MyParseClass");
var newObject = new MyParseClass();
newObject.save(
success:function(savedObject)
res.set("pointerFieldToMyParseClass",newObject);
res.save();
,error:function(e));
【讨论】:
以上是关于Parse.com 云代码 afterSave() 错误:“未捕获尝试使用指向新的未保存对象的指针保存对象。”的主要内容,如果未能解决你的问题,请参考以下文章
parse.com 云代码无法通过 mandrillapp 发送电子邮件