小编Ale*_*amo的帖子

我需要更新文档(如果存在),否则创建

有没有办法对文档进行更新(如果存在),否则创建一个文档。现在我正在使用该update方法,但如果该文档不存在,则会抛出错误消息。

Firestore.instance.collection('partnerRequests').document(user.uid).updateData( {
                  DateTime.now().millisecondsSinceEpoch.toString():partnerRegistrationFormData})
Run Code Online (Sandbox Code Playgroud)

未处理的异常:类型“PlatformException”不是类型“String”的子类型

dart firebase flutter google-cloud-firestore

2
推荐指数
1
解决办法
2257
查看次数

使用Java从firebase获取数据

我在下面的代码中遇到了一个问题,几乎逐字逐句从Firebase SDK Java文档中复制了.我是一个真正的语言,比如来自PHP和JavaScript的webdev背景的Java.

基本上,addListenerForSingleValueEvent没有触发来给我回数据.我注意到了这一点,因为系统打印输出没有触发,因此我认为监听事件没有触发.

我怀疑这与我有限的知识如何与函数本身的工作方式有关,就像我缺少一些关于类和函数如何相互作用的结构知识.

任何帮助将不胜感激,谢谢.

class FireBase {
public static void main(String[] args) throws IOException {
    // Fetch the service account key JSON file contents
    FileInputStream serviceAccount = new FileInputStream("key.json");

    // Initialize the app with a service account, granting admin privileges
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
        .setDatabaseUrl("https://ssworks-adwords.firebaseio.com/")
        .build();
    FirebaseApp.initializeApp(options);

    // As an admin, the app has access to read and write all data, regardless of Security Rules
    DatabaseReference ref = FirebaseDatabase
        .getInstance()
        .getReference("petitions");
    ref.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public …
Run Code Online (Sandbox Code Playgroud)

java firebase firebase-realtime-database

1
推荐指数
1
解决办法
844
查看次数

Fireall任务whenallcomplete() - 任务尚未完成

首次使用适用于Android的Google Tasks API并遇到此问题:使用Tasks.whenAllComplete或.whenAllSuccess()和OnCompleteListener或OnSuccessListener我收到错误任务即使在我检查task.isComplete()时仍未完成它返回true.知道这里出了什么问题吗?

db.collection("calendar").get()
    .continueWith(new Continuation<Task<QuerySnapshot>, Task<?>>() {
        @Override
        public Task<?> then(@NonNull Task<Task<QuerySnapshot>> task) throws Exception {
            List<Task<QuerySnapshot>> tasks = new ArrayList<Task<QuerySnapshot>>();
            for (DocumentSnapshot ds : task.getResult().getResult())
                tasks.add(ds.getReference().collection("thingstodo").get());

            return Tasks.whenAllSuccess(tasks);
        }
    })
    .addOnCompleteListener(new OnCompleteListener<Task<?>>() {
        @Override
        public void onComplete(@NonNull Task<Task<?>> task) {
            List<QuerySnapshot> lists = (ArrayList<QuerySnapshot>)task.getResult().getResult(); //error in this line
            for (QuerySnapshot qs : lists)
                for (DocumentSnapshot ds: qs) {
                    ScheduledItem item = ds.toObject(ScheduledItem.class);
                    //add to list including day
                    itemsList.add(item);

                }

            //list ready to be used!
        }
    });
Run Code Online (Sandbox Code Playgroud)

这是错误:

E/AndroidRuntime: …
Run Code Online (Sandbox Code Playgroud)

android google-tasks-api firebase google-cloud-firestore

1
推荐指数
1
解决办法
3281
查看次数

我应该删除ValueEventListener吗?

        DatabaseReference Ref = FirebaseDatabase.getInstance().getReference(Constants.Client + "/" + path);
        Ref.keepSynced(true);
        Ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
Run Code Online (Sandbox Code Playgroud)

我理解ValueEventListener在一个新线程中运行,我是否应该在任何时候实际删除它以进行正确的线程管理?(没有太多并行运行的线程的示例).如果是的话,该怎么办?

java multithreading android firebase firebase-realtime-database

1
推荐指数
1
解决办法
1143
查看次数

如何在 Android 中从 Cloud Firestore Firebase 获取或获取数据

我正在使用此代码:

DocumentReference docRef = db.collection("Users").document("user_01");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document != null && document.exists()) {

            } else {
                Log.d(TAG, "No such document");
            }
        } else {
            Log.d(TAG, "get failed with ", task.getException());
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

但我不知道如何获得。我知道put()在 Cloud Firestore 上插入数据的帮助下,但我不知道如何获取放置在user_01.

java android firebase google-cloud-firestore

1
推荐指数
1
解决办法
3261
查看次数

Firestore - 为什么检查DocumentSnapshot是否为空并且调用是否存在?

Firestore文档中查看此代码示例:

DocumentReference docRef = db.collection("cities").document("SF");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document != null && document.exists()) {
                Log.d(TAG, "DocumentSnapshot data: " + document.getData());
            } else {
                Log.d(TAG, "No such document");
            }
        } else {
           Log.d(TAG, "get failed with ", task.getException());
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

https://firebase.google.com/docs/firestore/query-data/get-data

为什么检查一下document != null?如果我正确读取源代码(初学者),该exists方法将在内部检查无效.

java android firebase google-cloud-firestore

1
推荐指数
1
解决办法
4052
查看次数

Firestore:如何从外部读取数据 void onComplete 方法

我从 Cloud Firestore 读取数据:

      firestoreDB.collection("events")
                .whereEqualTo("type", eventType)
                .get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if (task.isSuccessful()) {
                           List<Event> eventList = new ArrayList<>();

                           for(DocumentSnapshot doc : task.getResult()){
                              Event e = doc.toObject(Event.class);
                              e.setId(doc.getId());
                               eventList.add(e);
                           }
               //do something with list of pojos retrieved

                        } else {
                            Log.d(TAG, "Error getting documents: ", task.getException());
                        }
                    }
 }); 
Run Code Online (Sandbox Code Playgroud)

由于 onComplete 是一个 void 方法,我如何从外部方法获取 eventList?

例如,我尝试过:

List<Event> ReadCollection()
{
   final List<Event> eventList = new ArrayList<>();
firestoreDB.collection("events")
                    .whereEqualTo("type", eventType)
                    .get()
                    .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                        @Override …
Run Code Online (Sandbox Code Playgroud)

java android firebase google-cloud-firestore

1
推荐指数
1
解决办法
2201
查看次数

无法解决:com.google.firebase:firebase-messaging:16.0.5

如何解决这个错误!

“无法解决:com.google.firebase:firebase-messaging:16.0.5”

Firebase 依赖版本是16.0.5,我也切换并玩了一些其他版本,仍然有错误。

  def Firebase_version = "16.0.5"
        implementation "com.google.firebase:firebase-auth:$Firebase_version"
        implementation "com.google.firebase:firebase-messaging:$Firebase_version"
Run Code Online (Sandbox Code Playgroud)

我正在使用最新版本的类路径

 classpath 'com.android.tools.build:gradle:3.2.1'
 classpath 'com.google.gms:google-services:4.0.2'
Run Code Online (Sandbox Code Playgroud)

和存储库

google()
jcenter()
Run Code Online (Sandbox Code Playgroud)

两者都添加:

安卓工作室:3.2.1

android firebase build.gradle firebase-authentication firebase-cloud-messaging

1
推荐指数
1
解决办法
9373
查看次数

Android Room相对于Cloud Firestore的持久本地存储有何优势?

我的Android应用程序使用大量的结构化数据来向用户提供合适的建议,因此本地数据库似乎很合适。Room / DAO / ViewModel看起来是一个不错的体系结构,并且对底层实现有足够的抽象。里面的数据不会经常改变,并且一旦改变就只能单向流动:从服务器一直到用户设备中的本地数据库,再也没有其他方式。即使该应用很可能定期在线,对于大多数查询还是可以从本地数据进行处理的。

我正在使用Google Firebase处理后端服务,并使用Cloud Firestore数据库存储数据在服务器端。Firestore为脱机使用提供了用户数据的本地缓存,这比实现和同步自己的数据库要简单得多。是否有充分的理由避免这种方法?

还有一些类似的问题,例如: Firestore作为离线持久性机制的可靠性如何?Firebase Cloud Firestore中的部分脱机同步。我认为这是不同的,因为我不是在寻找长期的离线持久性,而是一个可靠的本地副本,以避免不必要的数据传输。

java android firebase google-cloud-firestore

1
推荐指数
1
解决办法
990
查看次数

什么是Firebase Cloud Firestore中的非规范化?

在谈论Firebase Cloud Firestore时,这种非规范化到底意味着什么?我在互联网上阅读了几篇文章,并在此处找到了一些关于stackoverflow的答案,大多数答案都推荐这种方法。这种非规范化真正有什么帮助?总是有必要吗?

数据库扁平化和非规范化是一回事吗?

这是我的首要问题,希望我能找到一个可以帮助我理解这一概念的答案。我知道是不同的,但是我有两年的MySQL经验。

firebase google-cloud-firestore

1
推荐指数
1
解决办法
704
查看次数