小编Lin*_*nxy的帖子

在Firestore中删除包含所有子集和嵌套子集的文档

如何删除包含其所有集合和嵌套子集合的文档?(在功能环境中)

在RTDB中,您可以ref.child('../someNode).setValue(null)完成所需的行为.

我可以想到两种方法可以实现所需的删除行为,这两种方式都有可怕的弊端.

  1. 创建一个"超级"功能,它将捕获每个文档并批量删除它们.此函数将变得复杂,易于更改,并且可能需要很长的执行时间.

  2. 为每种Document类型添加'onDelete'触发器,并使其删除任何直接子集合.您将在根文档上调用delete,删除调用将沿'tree'向下传播.由于功能执行的巨大负荷,这种情况非常缓慢,规模庞大且成本高昂.

想象一下,你必须删除一个'GROUP'及其所有孩子.对于#1来说它会非常混乱,而对于#2来说会很昂贵(每个文档有1个函数调用)

groups > GROUP > projects > PROJECT > files > FILE > assets > ASSET
                                                   > urls > URL
                                    > members > MEMBER
               > questions > QUESTION > answers > ANSWER > replies > REPLY
                                      > comments > COMMENT
               > resources > RESOURCE > submissions > SUBMISSION
                                      > requests > REQUEST
Run Code Online (Sandbox Code Playgroud)

是否有一种优越/偏好/更清晰的方式来删除文档及其所有嵌套的子集合?

考虑到你可以从控制台做到这一点应该是可能的.

firebase google-cloud-functions google-cloud-firestore

23
推荐指数
4
解决办法
5659
查看次数

使用Google设计资料库时如何使工具栏快速进入视图或视图之外?

我正在尝试实现类似于WhatsApp的效果,其中工具栏(滚动时)将剪切成视图磁铁状或视图磁铁状.

我的MainActivity XML是什么:

  • DrawerLayout - 基本布局
  • CoordinatorLayout - Appbar和工具栏以及选项卡的布局
  • AppBarLayout - 用于保存工具栏和标签
  • 工具栏 - 有这个标志: app:layout_scrollFlags="scroll|enterAlways"
  • SlidingTabLayout - 显示选项卡
  • ViewPager - 用于标签
  • RecyclerView - 用于coordinatorlayout

现在不要误会我的意思,它有效,当我向下滚动工具栏被推出视图但说我停止中途滚动,然后工具栏只是坐在那里一半隐藏在视野外,另一半在视野中..

我怎样才能解决这个问题,因为我希望它能够跳出视图或进入视图.

android scroll appbar toolbar

20
推荐指数
2
解决办法
2万
查看次数

使用SharedPreferences的最安全的方法

我需要一个处理我的SharedPreferences的类,我想出了3种方法,但经过一些研究后,似乎大多数都被认为是"反模式".

输入1

public final class MyPrefs {

  private MyPrefs(){ throw new AssertionError(); }

  public static void setFavoriteColor(Context context, String value){
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    prefs.edit().putString("color_key", value).apply();
  }

  public static void setFavoriteAnimal(Context context, String value){
    // ...
  }

  // ...

}

/* Usage */
MyPrefs.setFavoriteColor(this, "yellow");

// Reason why it might be considered "Bad"
// Class is not OO, just collection of static methods. "Utility Class"
Run Code Online (Sandbox Code Playgroud)

类型2

public class MyPrefs {

  private SharedPreferences mPreferences;
  private static volatile MyPrefs sInstance; 

  public static …
Run Code Online (Sandbox Code Playgroud)

java singleton android preferences sharedpreferences

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

AppEngine部署错误(app.yaml)

我正在尝试将app.yaml文件部署到appengine灵活.

这是我的app.yaml文件

runtime: java
env: flex
manual_scaling:
  instances: 1

handlers:
- url: /.*
  script: this field is required, but ignored
  secure: always

runtime_config:  # Optional
  jdk: openjdk8
  server: jetty9

resources:
  cpu: 0.5
  memory_gb: 0.18
  disk_size_gb: 10
Run Code Online (Sandbox Code Playgroud)

我试图用这个命令部署它:

gcloud app deploy app.yaml --verbosity = debug

这是我得到的错误:

DEBUG: No staging command found for runtime [java] and environment [FLEX].
WARNING: Deployment of App Engine Flexible Environment apps is currently in Beta
Building and pushing image for service [my-service]
DEBUG: Could not call git …
Run Code Online (Sandbox Code Playgroud)

deployment google-app-engine app-engine-flexible

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

Java方法返回对象还是直接操纵它?

我遇到了这段代码(对我来说很奇怪)。实际上,我从未见过这种用法,也从未亲自使用过,所以这很令人困惑...

  • 这里以哈希图为例,但其他对象的行为相同
public static void fillData(HashMap<Object, Object> dataMap){
    dataMap.put("key","value");
}
Run Code Online (Sandbox Code Playgroud)

现在,这非常令人困惑,因为我了解您的方式更像这样

public static HashMap<Object, Object> fillData(){
    HashMap<Object, Object> dataMap = new HashMap<>();
    dataMap.put("key","value");
    return dataMap;
}
Run Code Online (Sandbox Code Playgroud)

现在有时间我应该使用一种方法或另一种方法吗?我对编程还是很陌生的,但是我还没有发现关于这种类型结构的任何东西。

我还进行了实验,发现它仅适用于对象,不适用于基本体...

java methods return

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

什么是JavaFX等效的androids AsyncTask?

我目前必须为我的javaFX程序做一些网络操作,这就是我现在正在做的事情:

  • 1个线程类
  • 1具有回调方法的接口
  • 1主类实现该接口

我正在实现Main类中的那些并获得onProgress(),onDone()等更新,通过Thread类,其中包含一个Interface对象.

但是在android中这个任务要容易得多,只需使用AsyncTask就可以了.

你有

// Ui线程

  • onPreExecute()

//背景线程

  • doInBackground()

// Ui线程

  • onProgressUpdate()

// Ui线程

  • onPostExecute()

在JavaFX中是否有以这种方式工作的类?我需要进度条的进度更新,我需要知道何时完成任务而不冻结UI屏幕.

java networking multithreading android javafx

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

Google Appengine:预算和每日支出限制不起作用

我正在使用灵活的环境.我设置了结算帐户并设置以下内容:

  • 预算:0.01美元

  • 每日支出限额:0.01美元

但我已被收取5美元的费用.怎么可能?这条线告诉我收费来自哪里:

App Engine  Flex Instance Core Hours    5,769 Minutes   $5.06
App Engine  Flex Instance RAM   96.15 GB-hour   $0.68
Google Compute  Storage PD Capacity 1.43 GB-month   $0.06
Run Code Online (Sandbox Code Playgroud)

这就是我的预算

Specified amount    This billing account    50% 
$7.25 / $0.01
Run Code Online (Sandbox Code Playgroud)

你可以看到它显示更高的电量..

我想如果你设定每日消费限额/预算,它将停止服务请求并等到第二天再次获得免费配额.这就是我现在想要的,我不需要这个服务器全天候运行此刻并为我的卡充电.

我暂时禁用了应用程序,但这不是一个解决方案..我不想每次想要处理它时都禁用/启用服务器.我必须取消信用卡的链接吗?我只是希望服务器停止向我收费,并在免费配额结束后停止提供请求.

这就是我在AppEngine面板中设置的内容

Enabled (Daily spending limit: $0.01) Settings
Quotas reset every 24 hours. Next reset: 12 hrs 
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?

google-app-engine billing google-compute-engine app-engine-flexible

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

应该谨慎使用FirebaseDatabase.getInstance()吗?

例如,当我在android中使用SQLiteDatabase时,打开/关闭许多SQLiteDatabase助手通常不是一个好主意.相反,最好创建一种单例,确保只打开一个数据库.

假设我有一个使用静态方法的类执行大量需要DatabaseReference的Firebase操作.例:

static void checkIfUserIsMatched(...)
static void notifyUser(...)
static void modifyUser(...)
Run Code Online (Sandbox Code Playgroud)

可以在每个方法中调用FirebaseDatabase.getInstance()吗?在每个方法中创建一个新的DatabaseReference?

或者从调用Activity传递DatabaseReference会更好吗?

static void notifyUser(mUserReference, hisUserId)
Run Code Online (Sandbox Code Playgroud)

VS

static void notifyUser(myUserId, hisUserId) --> Create the reference inside method
Run Code Online (Sandbox Code Playgroud)

我希望优化的是网络使用和性能.或者这一切都无所谓,firebase是否为我处理了一切?

optimization android firebase firebase-realtime-database

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