【问题标题】:Android Firebase: Save data to databaseAndroid Firebase:将数据保存到数据库
【发布时间】:2019-12-09 09:10:50
【问题描述】:

我正在尝试从 Firebase 保存和检索数据,但在获取正确的语法时遇到了一些问题。

用户通过邮箱和密码的认证方式注册并使用相同的详细信息登录。

我有两个编辑文本字段,要求输入名称和语句。两个编辑文本框下方有一个按钮,用于将数据保存到数据库中。

private void saveQuote(){
String name = author.getText().toString();
String quotes = quote.getText().toString();

Author author = new Author(name, quotes);
//databaseReference.child(u.getUid()).setValue(author);

if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(quotes)){
    user = auth.getCurrentUser();
    String userID = user.getUid();
    databaseReference.child(userID).child("quotes").setValue(author);
}else{
    Toast.makeText(this, "Author Name is Empty", Toast.LENGTH_SHORT).show();
}
Toast.makeText(this, "Saved...", Toast.LENGTH_SHORT).show();

} 这个想法是,当用户登录应用程序时,它将他们的 Uid 保存为数据库中的主图块,然后在其下方,它们应该是名称和语句保存为一个字段的另一部分。这意味着如果他们写下另一个姓名和声明并按保存,则应在其 ID 下创建一个新字段,其中包含所写的姓名和声明。

save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            saveQuote();
        }
    });

Firebase 规则:

    {
  "rules": {
     "$uid": {
        ".read": "auth !== null && auth.uid === $uid",
        ".write": "auth !== null && auth.uid === $uid"
    }
  }
}

如何保存每个保存数据的请求。

想要的格式:

UID

进入

名字

引用

条目2

名字

引用

...等

【问题讨论】:

  • 尝试使用 .Push(author) 而不是 .setValue(author)
  • 抱歉,现在才尝试。

标签: java android json firebase


【解决方案1】:

您可以执行以下操作:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference(userID);
String key = ref.push().getKey();
ref.child(key).child("name").setValue(name);
ref.child(key).child("quote").setValue(quotes);

saveQuote方法中,获取数据库实例,然后使用setValue可以向数据库中添加数据

【讨论】:

  • 我收到一个错误:它说类型不兼容,找到 FirebaseDatabase,需要 DatabaseRefrence
  • 现在可以了,命令是atabaseReference ref = FirebaseDatabase.getInstance().getReference(userID);
【解决方案2】:

您可以直接将您的Author 对象推送到数据库。尝试使用以下:

private void saveQuote(){
    String name = author.getText().toString();
    String quotes = quote.getText().toString();

    if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(quotes)) {

        Author author = new Author(name, quotes);

        String userID = auth.getCurrentUser().getUid();
        String quoteKey = databaseReference.child(userID).push().getKey();

        databaseReference.child(userID).child(quoteKey).setValue(author);

        Toast.makeText(this, "Saved...", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(this, "Author Name is Empty", Toast.LENGTH_SHORT).show();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    相关资源
    最近更新 更多