解析:保存后获取对象 ID

PARSE : Get object id after save

本文关键字:取对象 ID 获取 保存 解析      更新时间:2023-09-26

我确定这很容易,但我是javascript的新手...我已经搜索了很长时间,但没有找到解决方案在 PARSE 中,我想创建一个对象并获取 id 去保存

var Obj = Parse.Object.extend("obj");
var obj = new Obj();
obj.save(null,{success:function(obj){alert(obj.id)}})

这提醒 ID,但当我尝试获取值时,我只得到一个未定义的

var Obj = Parse.Object.extend("obj");
var obj = new Obj();
var objid;
obj.save(null,{success:function(obj){objid = obj.id}})
alert(objid)

定义

你可以帮我吗?谢谢

您传递给obj.save的成功回调是异步调用的:它在 Parse 库收到成功响应后的某个时间点执行。第二个示例中的警报是同步调用的:它不会等待成功回调执行,因此此时永远不会定义objid

这不是一个与 Parse 特别相关的问题,而是在 JavaScript 中处理异步代码的一般问题。这些答案将为您提供JS中异步性的快速介绍:

为什么在函数内部修改变量后,我的变量保持不变? - 异步代码参考

如何从异步调用返回响应?

要扩展 user2943490 正确指出的内容,如果您希望该 alert() 正常工作,只需将其移动到成功回调中即可。

另外需要注意的是,目前 Parse 包括 Promises,其中函数可以在完成后一个接一个地调用和定义。下面是一个返回新创建对象的 objectId 的示例。

var ParseObj = Parse.Object.extend("obj"); 
// Create a new instance of class.
var obj = new ParseObj();
obj.save(null, { useMasterKey: true }).then(function(obj) {
    response.success(obj.id);   //obj.id is the objectId
}, function(error) {
// If there's an error storing the request, render the error page.
    response.error('Failed to save object.');
});