Tag: firebase database

如何从Firebase数据库中删除用户

所以我想添加一个用户删除他的帐户到我的应用程序的function..简单的权利? 我看文件,它很容易: FirebaseAuth.getInstance().getCurrentUser().delete() 但是,FirebaseDatabase和Storage中的所有数据仍然保留。 这是我的结构(给予或承担) 在firebase存储它更简单一点,所以我不包括在这个问题.. 现在的问题是,用户几乎与所有的节点有关联,并且有很多地方需要删除。 从android设备用户发送“DeleteUserRequest”到服务器,服务器负责删除用户。 但做完方法后,它的地狱! 我需要借用爸爸的显示器来编码,因为太深的嵌套调用! 这里是方法 public static void deleteUser(DeleteUserRequest request, ExecutorService executorService) { deleteUserReferences(request.getUserId(), executorService); deleteUserStorage(request.getUserId()); } /** * Delete Tree * – /grades/userId * – /subjects/userId * – /user_groups/userId -> save groupIdList * – /group_members/groupId/userId * – /groups/groupId/ [where createdBy=userId] save friendIdList * – /user-friends/friendId/userId * – /user_tokens/userId […]

Firestore与Firebase的离线问题

我将其中一个应用程序转换为新的Firestore。 我正在做一些事情,像点击一个按钮保存文档,然后在onSuccess监听器,去一个不同的活动。 我还使用Firestore保存操作返回任务的事实,使用Tasks.whenAll将任务组合在一起: val allTasks = Tasks.whenAll( createSupporter(supporter),, setStreetLookup(makeStreetKey(supporter.street_name)), updateCircleChartForUser(statusChange, createMode = true), updateStatusCountForUser(statusChange)) allTasks.addOnSuccessListener(this@SignUpActivity, successListener) allTasks.addOnFailureListener(this@SignUpActivity, onFailureListener) 最后,我从成功的保存中获取文档ID,并将其存储在首选项或本地数据库中供以后使用(在onSuccessListener ) 这一切都很好。 直到网络连接中断 。 然后,一切都崩溃了,因为任务永远不会完成,onSuccess / onFailure / onComplete监听器永远不会被调用。 所以应用程序只是挂起。 我正在通过在每次保存之前检查网络可用性来解决此问题,然后通过创建没有任何侦听器的任务来解决此问题。 我也使用UUID生成器在本地生成文档ID。 顺便说一句,这不是应用程序与旧的firebase的工作方式。 在这种情况下,离线时,一切都运行良好,每当应用程序上线时,我都会看到文件同步。 我的Firestore的解决方法似乎是一个可怕的黑客攻击。 有没有人想出更好的解决方案? 有关插入/删除文档回调的相关Firestore数据库在没有连接时不会被调用 addOnCompleteListener不会与云端firestore脱机调用

在SpringBoot中,Firebase连接在Linux上不起作用

我想要实现的是打开一个连接到我的firebase数据库,并获得一些我需要解析的数据。 我正在使用Spring Boot框架,firebase,kotlin和gradle的admin sdk。 在Windows 10上,它是像预期的那样工作,但是当我尝试在我的Linux服务器上运行.jar文件时,它不会得到任何数据或错误。 它被困在ValueEventListener中。 我有ufw安装,但禁用它或添加端口5228:5230(tcp / udp),没有解决问题。 val dataMinifiedRef = database.reference.child(“minifiedData”).child(“areas”) dataMinifiedRef.addListenerForSingleValueEvent(object : ValueEventListener { override fun onCancelled(error: DatabaseError?) { log.info(error!!.message) } override fun onDataChange(dataSnapshot: DataSnapshot) { log.info(“Got data”) } }) 编辑:这是我解析服务帐户。 val str = “{\n” + … “}\n” // convert String into InputStream val serviceAccount = ByteArrayInputStream(str.toByteArray()) val options = FirebaseOptions.Builder() […]

使用RxJava加入来自Firebase实时数据库的扁平化数据

加入扁平的数据是文档中描述的常见用例。 但是文档显示了一个不是实时的简单例子,它不会对变化做出反应。 我正在寻找更强大的实施。 我认为RxJava是理想的。 考虑以下Firebase结构: { "messages": { "group_id_1": { "message_id_1": { "text": "Hello", "author": "uid_1" } } }, "users": { "uid_1": { "name": "David" } }, "rooms": { "room_id_1": { "name": "General", "members": { "uid_1": true } } } } 我在这里看到两个用例: 获取具有作者姓名的组中的消息列表 我想我会得到Observable<Message> ,当我订阅它时,依赖关系(这些消息的用户)也将在一些缓存中订阅。 当我显示消息时,我可以从缓存中获取作者的名字。 这也是实时的 – 如果作者名称改变,可观察者发出改变的消息。 当我取消订阅observable时,也会依赖取消订阅。 获取他们名字的房间成员名单 我想我会得到Observable<User> ,当我订阅它,它将首先订阅房间的成员,然后个人用户。 这是实时的 – […]

如何使用Firebase服务器时间戳生成日期?

目前,Google版本的ServerValue.TIMESTAMP返回{".sv":"timestamp"} ,一旦将数据保存到Firebase服务器,该版本将用作Firebase的指令,以便用该服务器时间戳填充该字段。 但是,当您在客户端创建数据时,您还没有实际的时间戳(即用作创建日期)。 在初始保存和随后的检索之后,您只能访问时间戳,我想 – 这有时为时已晚,不够优雅。 Google之前: 更新:忽略这一部分,因为它是不正确的 – 我误解了这些例子。 ServerValue.TIMESTAMP总是返回{".sv":"timestamp"} 。 据我所知,在谷歌Firebase之前,似乎有一个服务器生成的时间戳,允许您获取实际的时间戳: import com.firebase.client.ServerValue; ServerValue.TIMESTAMP // eg. 1466094046 ( 参考文献1 , 参考文献2 ) 问题: 这样的保存/检索是获得我的模型实例上的服务器生成的创建日期的唯一方法吗? 如果是的话,你能提出一个实施这种模式的方法吗? 我是否正确理解ServerValue.TIMESTAMP随着Google收购Firebase而改变? 更新:不,@FrankvanPuffelen回复说,收购过程中没有任何变化。 注意: 我不考虑在客户端使用new Date() ,因为我一直在阅读它是不安全的,但如果你认为不同,请分享你的想法。

从Firebase数据库中检索数据

嗨,我试图从firebase数据库检索数据。 这是我的代码 – (FIRDatabaseReference *) referenceFromURL:(NSString *)databaseUrl{ commentsRef = [[FIRDatabase database] referenceFromURL:databaseUrl]; return commentsRef; } -(void)viewWillAppear:(BOOL)animated { [commentsRef observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot *snapshot) { NSDictionary * post = snapshot.value; }]; } 该引用是由数据库成功构建的,但代码是以块的形式编写的 “NSDictionary * post = snapshot.value;” 没有执行。

将Firebase中的数据加载到ExpandableList

我试图在我的应用程序中使用可扩展列表。 我遵循这些步骤 ,但我坚持如何从Firebase检索数据,将它们添加为我的代码Dummydata。 这里是主要的活动 public class MainActivity extends AppCompatActivity { ExpandableListAdapter myAdapter; ExpandableListView myList; List<String> listDataHeader; HashMap<String,List<String>> listDataChild; private FirebaseDatabase mFirebaseDatabase; private DatabaseReference mDatabaseReference; private ChildEventListener mChildEventListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // get the listview myList=(ExpandableListView)findViewById(R.id.Explist); prepareListData(); myAdapter= new ExpandableListAdapter(this,listDataHeader,listDataChild); myList.setAdapter(myAdapter); } private void prepareListData(){ mFirebaseDatabase= FirebaseDatabase.getInstance(); mDatabaseReference = mFirebaseDatabase.getReference().child("category"); //Read […]