小编Gas*_*lén的帖子

Firebase如何以原子方式防止重复条目

我正在考虑使用firebase作为Web应用程序用户数据的数据存储.我目前的想法是使用他们加入的时间戳作为引用该用户数据的密钥来存储每个用户的数据.这种方案的优点在于它是一种为用户分配唯一整数ID的简单方法,并且可以简化用户的时间顺序排序.

然而,缺点是如果两个"添加用户"请求被提交相同的数据,应用程序将很乐意添加两个单独的条目,这是不理想的.我可以随意乱扔东西(我开始认为我应该使用电子邮件作为密钥并通过连接数据优先考虑,而不是我当前的方案),但我想我不想这样做.有没有办法防止重复数据?

天真的方法可能只是做以下事情:

if(!searchFirebaseForUser(data)) {
    addUser(data);
}
Run Code Online (Sandbox Code Playgroud)

但这绝对是一种竞争条件; 两个请求都很容易查询并在数据库中找不到用户,并且都添加.我想在一个交易中执行此操作,但似乎Firebase事务支持不包括这种情况.有办法处理这个吗?

transactions atomic firebase firebase-realtime-database

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

如何基于密钥在Firebase控制台中排序节点

我有一个密钥为1到1400的用户节点,但顺序不正确。热门在控制台中按顺序查看。我在另一个节点上也有类似的经历。但是后来自动订购了 我的控制台

firebase firebase-authentication firebase-realtime-database

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

如何在不使用数组的情况下拆分String?

我正在尝试拆分一个字符串.

我一直在搜索,但我只发现了split与数组一起使用的情况,所以例如如果你有字符串"i love stackoverflow"并使用split,输出将是[i,love,stackoverflow]

而不是我有一个这种格式的字符串,"URL_cars_es"我只想要es它的一部分,因为我有多个文件进入我的数据库与不同的语言让我说我有"URL_cars_it" "URL_cars_nb",等等.我只需要拆分并获得,nb,es,it所以我可以将它传递给我StorageReference并获取不同的文件

URL_cars_es通过使用下面的代码得到

selecteditem =  adapterView.getItemAtPosition(i).toString();
Run Code Online (Sandbox Code Playgroud)

而且我还需要修剪/拆分它es.

java string split

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

日期(时间戳)超过 24 小时的 Firestore 查询

我的文档中有一个字段存储为时间戳,如下所示

  "created_at": admin.firestore.FieldValue.serverTimestamp(),
Run Code Online (Sandbox Code Playgroud)

我想要做的是使用 Cloud Functions 中的 admin lib 查找所有文档,这些文档具有该字段超过 24 小时的历史

const tsToMillis = admin.firestore.Timestamp.now().toMillis();
const results = await files.where("created_at", ">", tsToMillis - (24 * 60 * 60 * 1000)).get();
Run Code Online (Sandbox Code Playgroud)

我已经尝试了上面的方法,但是我不确定如何获取值来比较它,或者有没有办法直接使用 FS 中的时间戳来执行此操作而不进行转换?

javascript firebase-admin google-cloud-firestore

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

JsonResponse 的 Firebase Auth 实例化失败

我遇到了一个奇怪的问题,在调试模式下我的应用程序工作正常,我怀疑混淆器正在做一些我无法登录的事情。

错误

在此输入图像描述

混淆器文件

-keep class com.myapp.domain.model.** { *; }
-dontwarn org.conscrypt.**
-dontwarn org.bouncycastle.**
-dontwarn org.openjsse.**
Run Code Online (Sandbox Code Playgroud)

所有序列化类都在模型包内,我即将发布一个新版本,上一个版本运行良好,我没有触及任何与 Proguard 相关的内容,只是 UI 更改。

我尝试过的

  • 失效/重启
  • 将 SHA-1 添加到 firebase 身份验证
  • 检查身份验证方法(用户名/密码)是否已启用
  • 检查 proguard 是否未关闭与身份验证相关的内容
  • 升级依赖

依赖关系

implementation 'com.google.firebase:firebase-auth-ktx:21.3.0'
implementation 'com.google.android.gms:play-services-auth:20.5.0'
Run Code Online (Sandbox Code Playgroud)

正如我提到的,调试模式工作正常,我怀疑我的 buildtype 配置出了问题(更多关于 minifyEnabled 的信息)

buildTypes {
        debug {
            minifyEnabled false
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }
Run Code Online (Sandbox Code Playgroud)

我看到了这个响应:Firebase 身份验证失败并出现 FirebaseException:JsonResponse 的实例化失败

但我无法禁用发布应用程序上的混淆

android kotlin firebase firebase-authentication

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

无法在int []上设置数字

我做了一个传递的方法int[],所以在每个位置我想设置4个数字,这就是我做的:

private void loadCars(int[] car){
    Json json = new Json(getApplicationContext());
    ArrayList<JSONObject> allCars;
    allCars = json.gettTodosLosJson();

    //Cargas los pictos desde el json
    //Seteamos el texto de las opciones
    Opcion1.setCustom_Img(json.getIcono(allCars .get(car[0])));
    Opcion2.setCustom_Img(json.getIcono(allCars .get(car[1])));
    Opcion3.setCustom_Img(json.getIcono(allCars .get(car[2])));
    Opcion4.setCustom_Img(json.getIcono(allCars .get(car[3])));
}
Run Code Online (Sandbox Code Playgroud)

所以,当我想设置每辆车的数字时,我这样做:

loadCars(377,643,628,614);  
Run Code Online (Sandbox Code Playgroud)

但它不起作用,如果我设置方法就行,(int car1, int car2, int car3, int car4)但我不想这样做.

java arrays int android

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

禁用按钮jetpack compose上的涟漪效果

我已经看到我们可以禁用内部视图的连锁反应,clickable(interactionSource, indication)例如行或列,但我的问题是,我们是否可以从 Button或禁用它FloatingActionButton

我看到它FloatingActionButton有一个交互源属性,我已经尝试过这个

FloatingActionButton(
        modifier = Modifier
            .size(40.dp),
        onClick = {
            buttonState = when (buttonState) {
                ButtonState.PRESSED -> ButtonState.UNPRESSED
                ButtonState.UNPRESSED -> ButtonState.PRESSED
            }
        },
        interactionSource = remember {
            MutableInteractionSource()
        })
Run Code Online (Sandbox Code Playgroud)

这不能消除连锁反应。

然后我尝试使用indication这样的修改器

FloatingActionButton(
        modifier = Modifier
            .size(40.dp)
            .indication(
                interactionSource = remember {
                    MutableInteractionSource()
                },
                indication = null
            ),
        onClick = {
            buttonState = when (buttonState) {
                ButtonState.PRESSED -> ButtonState.UNPRESSED
                ButtonState.UNPRESSED -> ButtonState.PRESSED
            }
        })
Run Code Online (Sandbox Code Playgroud)

也不起作用,然后我尝试的最后一件事是.clickable(...)在 Fab 按钮的修饰符中添加 ,但我认为这是毫无意义的,因为该按钮有自己的 onClick …

android kotlin android-jetpack-compose

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