0

我正在从 Parse 迁移到 Backendless,目前正在尝试用 Parse 做一些非常明显的事情。

我正在创建一个类:

@ParseClassName("UserPreferences")
public class UserPreferences extends ParseObject {

     public ParseFile getBackground(){
         return getParseFile("background.jpg");
     }

     public boolean getAudioStatus(){
         return getBoolean("audio");
     } 
     public void setAudioStatus(boolean status){
     put("audio", status);
     }
}

现在我想将这个类作为指针分配给当前登录的用户:

UserPreferences userPrefs = new UserPreferences();
userPrefs.setAudioStatus(true);
ParseUser user = ParseUser.getCurrentUser();
user.put("prefs", userPrefs);

userPrefs.saveInBackground() 
user.saveInBackground();  //again, use SaveCallback

并检索所有值等以应用于本地首选项:

ParseUser user = ParseUser.getCurrentUser();
UserPreferences userPrefs = user.getParseObject("prefs");
userPrefs.fetchInBackground(); 

这样,用户的数据总是与他自己相关联,并且 objectID 等不是问题。

现在我在使用 Parse 时没有自己解决这个问题。所以不幸的是,我不能真正谈论这件事。我只是希望更有经验的人看到我在做什么,并且可以将其与以某种方式将其转换为 Backendless SDK 和工作流程相关联?

4

1 回答 1

3

您不需要在您保存/加载到/从 Backendless 的对象中扩展任何专门的 Backendless 类。在类中,您可以使用公共字段或 getter/setter 属性。您不需要使用任何注释。事情要简单得多。如果您有一个引用类 B 的类 A(通过字段或 javabean 属性),那么在后端,我们会将 A 存储在名为“A”的表中,将 B 存储在名为“B”的表中。我们还将在后端的两条记录之间创建关系。

有两种方法可以处理 Backendless 显示的内容:

使用首选项保存用户对象:

BackendlessUser user = Backendless.UserService.CurrentUser();
user.setProperty( "audioStatus", true );
user.setProperty( "backgroundImageUrl", url-to-background-jpg );
Backendless.UserService.save( user, asyncCallback );

这将导致在用户表中创建两列:“audioStatus”和“backgroundFile”。但是,如果您想要一个单独的表来存放所有首选项,您可以这样做:

public class UserPreferences 
{
  // or use Java bean getter/setter instead of fields
  public String backgroundImageUrl;
  public boolean audioStatus;
}

UserPreferences prefs = new UserPreferences();
prefs.backgroundImageUrl = url-to-background-jpg;
prefs.audioStatus = true;    
BackendlessUser user = Backendless.UserService.CurrentUser();
user.setProperty( "userPrefs", prefs );
Backendless.UserService.save( user, asyncCallback );

这将导致在后端创建一个辅助表。该表将被称为“UserPreferences”——就像类名一样。Backendless 还将在用户对象和 UserPreferences 表中的特定记录之间创建关系。

检索用户属性

如果用户属性不是通过关系存储的(参见上面的第一个示例),那么它们会在用户登录时立即加载。然后您可以使用 getProperty 方法获取属性:

 Backendless.UserService.login( userName, password, new AsyncCallback<BackendlessUser>()
    {
      @Override
      public void handleResponse( BackendlessUser user )
      {
        boolean audioStatus = (boolean) user.getProperty( "audioStatus" );
        String fileUrl = (String) user.getProperty( "backgroundImageUrl" );
      }

      @Override
      public void handleFault( BackendlessFault backendlessFault )
      {

      }
    });

如果首选项存储在相关表中,那么您有几个选项可以加载它们:

BackendlessUser user = Backendless.UserService.CurrentUser();
ArrayList<String> relations = new ArrayList<String>();
relations.add( "userPrefs" ); // name of the relation column in Users
Backendless.Data.of( BackendlessUser.class ).loadRelations( user, relations, new AsyncCallback<BackendlessUser>()
   {
     @Override
     public void handleResponse( BackendlessUser user )
     {
       // user - object with loaded relations. 
       // now you can do this:
       UserPreferences prefs = (UserPreferences)user.getProperty( "userPrefs" );
     }

     @Override
     public void handleFault( BackendlessFault backendlessFault )
     {

     }
   });

希望这可以帮助!

于 2016-02-01T18:31:24.537 回答