如何删除包含其所有集合和嵌套子集合的文档?(在功能环境中)
在RTDB中,您可以ref.child('../someNode).setValue(null)完成所需的行为.
我可以想到两种方法可以实现所需的删除行为,这两种方式都有可怕的弊端.
创建一个"超级"功能,它将捕获每个文档并批量删除它们.此函数将变得复杂,易于更改,并且可能需要很长的执行时间.
为每种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)
是否有一种优越/偏好/更清晰的方式来删除文档及其所有嵌套的子集合?
考虑到你可以从控制台做到这一点应该是可能的.
我正在尝试实现类似于WhatsApp的效果,其中工具栏(滚动时)将剪切成视图磁铁状或视图磁铁状.
我的MainActivity XML是什么:
app:layout_scrollFlags="scroll|enterAlways"现在不要误会我的意思,它有效,当我向下滚动工具栏被推出视图但说我停止中途滚动,然后工具栏只是坐在那里一半隐藏在视野外,另一半在视野中..
我怎样才能解决这个问题,因为我希望它能够跳出视图或进入视图.
我需要一个处理我的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) 我正在尝试将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) 我遇到了这段代码(对我来说很奇怪)。实际上,我从未见过这种用法,也从未亲自使用过,所以这很令人困惑...
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)
现在有时间我应该使用一种方法或另一种方法吗?我对编程还是很陌生的,但是我还没有发现关于这种类型结构的任何东西。
我还进行了实验,发现它仅适用于对象,不适用于基本体...
我目前必须为我的javaFX程序做一些网络操作,这就是我现在正在做的事情:
我正在实现Main类中的那些并获得onProgress(),onDone()等更新,通过Thread类,其中包含一个Interface对象.
但是在android中这个任务要容易得多,只需使用AsyncTask就可以了.
你有
// Ui线程
//背景线程
// Ui线程
// Ui线程
在JavaFX中是否有以这种方式工作的类?我需要进度条的进度更新,我需要知道何时完成任务而不冻结UI屏幕.
我正在使用灵活的环境.我设置了结算帐户并设置以下内容:
预算: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
例如,当我在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是否为我处理了一切?
android ×4
java ×3
firebase ×2
appbar ×1
billing ×1
deployment ×1
javafx ×1
methods ×1
networking ×1
optimization ×1
preferences ×1
return ×1
scroll ×1
singleton ×1
toolbar ×1