Parse 中的 objectId 为 null,虽然在将对象保存到 Parse 云时没有 ParseException

Posted

技术标签:

【中文标题】Parse 中的 objectId 为 null,虽然在将对象保存到 Parse 云时没有 ParseException【英文标题】:objectId in Parse is null, although there is no ParseException while saving object to Parse cloud 【发布时间】:2016-04-09 14:34:50 【问题描述】:

我正在尝试将对象保存到 Parse 云并在成功保存时获取它的 objectId。如果有任何异常,我将在日志中打印异常。单击保存按钮后,日志中没有显示 ParseException,但返回的 objectId 始终为 null。

这是我的子类:

@ParseClassName("PetOwner")

公共类 PetOwner 扩展 ParseObject

public PetOwner() super(); 

public String getOwnerId()
   return getString("objectId");


public String getOwnerName()
    return getString("name");


public ParseGeoPoint getLocation()
    return getParseGeoPoint("location");


public String getPhoneNumber()
    return getString("phoneNumber");


public Number getRadius()
    return getNumber("searchRadius");


public Installation getInstallation()
    return (Installation) getParseObject("installation");


public String getBackupEmail()
    return getString("backupemail");


public String getEmail()
    return getString("email");


public Date createdAt()
    return getDate("createdAt");


public Date updatedAt()
    return getDate("updatedAt");


public void setOwnerName(String name) put("name", name); 

public void setPhoneNumber(String phone) put("phoneNumber", phone); 

public void setEmail(String email) put("email", email); 

public static ParseQuery<PetOwner> getQuery()
    return ParseQuery.getQuery(PetOwner.class);

这是我正在编写的代码,用于在获取用户在 EditText 视图中输入的姓名、电话号码和电子邮件字段的值后将对象保存到云中。

 FloatingActionButton saveProfile = (FloatingActionButton) findViewById(R.id.save_button);
saveProfile.setOnClickListener(new View.OnClickListener() 
    @Override
    public void onClick(View v) 
        if (nameChanged && checkPhoneNumber() && checkEmail()) 
                final PetOwner petOwner = new PetOwner();
                petOwner.setOwnerName(userName.getText().toString());
                petOwner.setPhoneNumber(phoneNumber.getText().toString());
                petOwner.setEmail(email.getText().toString());

                petOwner.saveInBackground(new SaveCallback() 
                    @Override
                    public void done(ParseException e) 
                    if (e == null) 
                        Log.d(TAG, "after saveinbackground is done");
                        Log.d(TAG, petOwner.getOwnerId() + " is the saved object id");
                     else 
                        Log.d(TAG, "saveinbackground NOT done");
                        Log.e(TAG, "exception", e);
                    
                
            );
        
    
);

日志显示:

04-09 19:33:50.385 31818-31818/us.furalert.Furalert D/PetOwnerDetails: after saveinbackground is done 
04-09 19:33:50.385 31818-31818/us.furalert.Furalert D/PetOwnerDetails: null is the saved object id

我无法弄清楚我的代码有什么问题。为什么objectId为空?

请帮忙!

【问题讨论】:

如果用 getObjectId() 替换 getString("objectId") 会怎样,因为 ParseObjects 有一个内置的方法来检索 objectId @cYrixmorten 非常感谢!!!终于成功了! 不错 :-) 没问题。我只是将其添加为答案。 【参考方案1】:

用 getObjectId() 替换 getString("objectId") 因为 ParseObjects 有一个内置方法来检索 objectId

【讨论】:

以上是关于Parse 中的 objectId 为 null,虽然在将对象保存到 Parse 云时没有 ParseException的主要内容,如果未能解决你的问题,请参考以下文章

如何从存储在 Parse 列中的数组中删除对象

Parse.com用java创建objectId

如何使用 ObjectIds 数组从 Parse 中检索用户数组?

在 Parse 平台上使用 ObjectId 发布新记录

Parse-JS-SDK,matchesKeyInQuery 不适用于 objectId。

按指针的 objectId 对 Parse 结果进行排序