PARSE:保存后获取对象ID

时间:2014-11-28 10:44:54

标签: javascript parse-platform

我确定它很简单,但我是一个新的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)
  

未定义

你能帮帮我吗? 感谢

3 个答案:

答案 0 :(得分:3)

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

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

Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference

How do I return the response from an asynchronous call?

答案 1 :(得分:1)

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

答案 2 :(得分:0)

另外需要注意的是,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.');
});