Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改Firebase数据库上用户帖子的作者名称_Android_Firebase_Database Design_Firebase Realtime Database - Fatal编程技术网

Android 更改Firebase数据库上用户帖子的作者名称

Android 更改Firebase数据库上用户帖子的作者名称,android,firebase,database-design,firebase-realtime-database,Android,Firebase,Database Design,Firebase Realtime Database,我正在开发的应用程序与Instagram非常相似 在Instagram上,用户可以随时更改用户名。如果您更改了用户名,您的帖子也会显示更新后的用户名 如何在firebase数据库环境中实现这一点 例如,我有下面的VO @IgnoreExtraProperties public class Post { String uid; String username; String content; int likesCount = 0; Map<Strin

我正在开发的应用程序与Instagram非常相似

在Instagram上,用户可以随时更改用户名。如果您更改了用户名,您的帖子也会显示更新后的用户名

如何在firebase数据库环境中实现这一点

例如,我有下面的VO

@IgnoreExtraProperties
public class Post {

    String uid;
    String username;
    String content;
    int likesCount = 0;
    Map<String, Boolean> likes = new HashMap<>();
    Map<String, Boolean> hashtags = new HashMap<>();

    public Post() {
        // Default constructor required for calls to DataSnapshot.getValue(Post.class)
    }

    public Post(String uid, String username, String content) {
        this.uid = uid;
        this.username = username;
        this.content = content;
    }

    @Exclude
    public Map<String, Object> toMap() {
        HashMap<String, Object> result = new HashMap<>();
        result.put("uid", uid);
        result.put("username", username);
        result.put("content", content);
        result.put("likesCount", likesCount);
        result.put("likes", likes);
        result.put("hashtags", hashtags);

        return result;
    }
}
@ignoreextroperties
公营职位{
字符串uid;
字符串用户名;
字符串内容;
int-likescont=0;
Map likes=newhashmap();
Map hashtags=new HashMap();
公职人员职位(){
//调用DataSnapshot.getValue(Post.class)所需的默认构造函数
}
公开帖子(字符串uid、字符串用户名、字符串内容){
this.uid=uid;
this.username=用户名;
this.content=内容;
}
@排除
公共地图toMap(){
HashMap结果=新建HashMap();
结果。输入(“uid”,uid);
结果。输入(“用户名”,用户名);
结果。放置(“内容”,内容);
结果。put(“likecount”,likecount);
结果。放置(“喜欢”,喜欢);
结果.put(“hashtags”,hashtags);
返回结果;
}
}
  • 如果我在Post对象中包含“username”,我可以同步显示每个带有用户名的Post,但是要始终显示最新更新的“username”是很困难的

    如果一个用户的帖子超过1000篇,我是否应该在更改用户名的同时更新所有帖子

  • 如果我在Post对象中排除“用户名”,我可以在每次加载任何Post后异步加载更新的“用户名”

  • 或者在第一次只显示旧用户名,并检查它是否在每次加载帖子时都被更改,然后异步更新它


  • 哪种方法最有效、最合适?

    用户信息如何存储在数据库中?将JSON结构作为文本发布。您可以通过单击Firebase控制台中的导出JSON链接来获得此信息。@RamithDR很抱歉响应太晚。仍然很艰难。{“用户”:{“6rFrdBjiXtSwKz2NZsAjrARFwcu2”:{“id”:“evergreen”,“username”:“Tom”}}}}用户信息如何存储在数据库中?将JSON结构作为文本发布。您可以通过单击Firebase控制台中的导出JSON链接来获得此信息。@RamithDR很抱歉响应太晚。仍然很艰难。{“用户”:{“6rFrdBjiXtSwKz2NZsAjrARFwcu2”:{“id”:“常青树”,“用户名”:“汤姆”}}