小编Pie*_*ier的帖子

如何在Firebase托管中清除旧部署的版本?

每次部署到Firebase托管时,都会创建一个新的部署版本,以便您可以回滚并查看部署的人员.这意味着每次部署的每个文件都存储并占用更多空间.

除了逐个手动删除每个部署版本之外,还有任何自动清理这些无用文件的方法吗?

firebase firebase-hosting

32
推荐指数
4
解决办法
7230
查看次数

React:将ref传递给道具的正确方法是什么?

我正在尝试将组件的ref传递给另一个组件.由于字符串引用已被弃用,我正在使用回调引用.

所以我有类似的东西:

<One ref={c => this.one = c}/>
<Two one={this.one}/>
Run Code Online (Sandbox Code Playgroud)

问题是每当我尝试进入this.props.one内部时Two我都会得到undefined.

我甚至试过这个Two:

componentDidMount(){
    setTimeout(()=>{
        console.log(this.props.one);
    },5000)
}
Run Code Online (Sandbox Code Playgroud)

似乎问题在于,当创建prop时,ref仍然不存在,因为它已经创建了一次One.但我不知道如何"刷新"道具Two以获得已安装组件的引用.

那么将ref传递给另一个组件的正确方法是什么?

编辑

一些用户建议将该逻辑封装在更高的组件中,该组件本身会呈现其他子组件.

这种方法的问题在于您无法创建可重用的逻辑,并且必须在这些封装组件中反复重复相同的逻辑.

假设您要创建一个通用<Form>组件,它将提交逻辑封装到您的商店,错误检查等.您可以这样做:

<Form>
    <Input/>
    <Input/>
    <Input/>
    <Input/>
    <SubmitButton/> 
</Form>
Run Code Online (Sandbox Code Playgroud)

在此示例<Form>中,无法访问子节点的实例(和方法),因为this.props.children不返回这些实例.它返回一些伪组件列表.

那么如何在<Input/>不通过ref的情况下检查某个是否检测到验证错误?

您必须使用验证逻辑将这些组件封装在另一个组件中.例如在<UserForm>.但是,由于各形式是不同的相同的逻辑必须被复制在<CategoryForm>,<GoupForm>等等,这是非常低效的这就是为什么我要封装在验证逻辑<Form>和传递的引用<Input>部件<Form>.

javascript reactjs

28
推荐指数
3
解决办法
3万
查看次数

如何使用Kotlin setOnEditorActionListener

所以我有这个Java代码:

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            doSomething();
            return true;
        }
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

我已经设法得到这个(我甚至不确定它是正确的方式):

editText.setOnEditorActionListener() { v, actionId, event ->
      if(actionId == EditorInfo.IME_ACTION_DONE){
          doSomething()
      } else {
      }
}
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误 Error:(26, 8) Type mismatch: inferred type is kotlin.Unit but kotlin.Boolean was expected

那么这样的事件处理程序是如何用Kotlin编写的?

android kotlin

26
推荐指数
3
解决办法
1万
查看次数

如何在Firebase中检索多个密钥?

考虑这个数据结构:

{
    "users":{
        "user-1":{
            "groups":{
                "group-key-1":true,
                "group-key-3":true
            }
        }
    },
    "groups":{
        "group-key-1":{
            "name":"My group 1"
        },
        "group-key-2":{
            "name":"My group 2"
        },
        "group-key-3":{
            "name":"My group 3"
        },
        "group-key-4":{
            "name":"My group 4"
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式获取特定用户的组:

firebase.database().ref('users/user-1/groups').on(...)
Run Code Online (Sandbox Code Playgroud)

哪个会给我这个对象:

{
    "group-key-1":true,
    "group-key-3":true
}
Run Code Online (Sandbox Code Playgroud)

所以现在我想检索这些组的信息.

我最初的直觉是循环这些键并执行此操作:

var data = snapshot.val()
var keys = Object.keys(data)

for (var i = 0; i < keys.length; i++) {
    firebase.database().ref('groups/' + keys[i]).on(...)
}
Run Code Online (Sandbox Code Playgroud)

这是在Firebase中调用同一端点上的多个密钥的适当方法吗?

Firebase是否提供了解决此问题的更好方法?

javascript firebase firebase-realtime-database

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

Firebase会缓存数据吗?

我在某处读到了Firebase缓存数据的说法.

所以我运行了这个测试,读取了大量的数据(大约400KB).

这是相关的代码.

firebase.initializeApp(config);

var counter = 0;

console.time('firebase answered in');
firebase.database().ref('texts').once('value',onData);

function onData(snapshot){
  console.timeEnd('firebase answered in');

  counter ++;
  if(counter > 20) return;

  setTimeout(function(){
    console.time('firebase answered in');
    firebase.database().ref('texts').once('value',onData);
  },2000);
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,第一次加载数据需要一段时间,后续调用花费的时间要少得多.

firebase的回答:1279.422ms

firebase的回答:236.378ms

firebase的回答:228.595ms

firebase回答:202.700ms

firebase的回答:208.371ms

firebase回答:214.807ms

等等

但是,如果数据在本地缓存~200ms(有时更多)似乎需要大量时间来访问本地数据.足以让用户在渲染UI时感知延迟.

Firebase缓存数据也是如此吗?那些发生了~200ms什么?

javascript firebase firebase-realtime-database

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

如何在 Svelte 中定义条件转换?

在 Svelte 中,我们可以添加过渡:

<div in:fade={{duration: 150}}>...</div>
Run Code Online (Sandbox Code Playgroud)

还可以使用条件 HTML 属性:

<input disabled={null}>
Run Code Online (Sandbox Code Playgroud)

这不适用于转换:

<div in:fade={null}>...</div>
Run Code Online (Sandbox Code Playgroud)

它会抛出此错误,因为它需要一个配置对象:

无法读取 null 属性“延迟”

那么在 Svelte 中添加条件转换的适当方法是什么?

以外:

{#if animate}
    <div in:fade></div>
{:else}
    <div></div>
{/if}
Run Code Online (Sandbox Code Playgroud)

svelte

21
推荐指数
2
解决办法
3868
查看次数

如何检查Firebase存储中是否存在文件?

使用数据库时,您可以snapshot.exists()检查是否存在某些数据.根据文档,没有类似的存储方法.

https://firebase.google.com/docs/reference/js/firebase.storage.Reference

检查Firebase存储中是否存在某个文件的正确方法是什么?

javascript firebase firebase-storage

19
推荐指数
4
解决办法
8238
查看次数

如何在 Firebase 可调用云函数上抛出错误?

我正在尝试使用可调用的云函数在 Firebase 上创建一个新用户。每当出现错误(例如:电子邮件无效)时,无论我做什么,该函数总是向我的 Firebase 应用返回相同的神秘错误:

{"error":{"status":"INTERNAL","message":"INTERNAL"}}
Run Code Online (Sandbox Code Playgroud)

在 Firebase 控制台中,我也得到了这个:

Unhandled error Error: Unknown error status: auth/invalid-email
Run Code Online (Sandbox Code Playgroud)

这没有多大意义,因为我实际上是在处理错误。这是云函数的代码:

exports.createUser = (data, context) => {
    return admin.auth().createUser({
        email: data.email,
        password: data.password
    }).catch((error) => {
        throw new functions.https.HttpsError(error.errorInfo.code, error.errorInfo.message);
    });
}
Run Code Online (Sandbox Code Playgroud)

如图所示我试着使用throw functions.https.HttpsError这是什么文档建议

我也尝试过return functions.https.HttpsError甚至抛出我自己的错误,结果相同。

我使用了 try/catch withawait而不是使用then()and catch()。结果一样。功能控制台仍然告诉我错误没有被处理,这是荒谬的。

那么在使用可调用的云函数时如何向我的用户抛出正确的错误呢?

node.js firebase google-cloud-functions

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

是否可以在C#中创建没有类的对象?

在许多语言中,您可以在不创建数据类型的情况下创建对象,并向该对象添加属性.

例如在JS或AS中:

 var myObject = {};
 myObject.myParameter = "hello world";
Run Code Online (Sandbox Code Playgroud)

或者您可以使用C和C++创建结构.

是否有可能在C#中做到这一点?

c# object

15
推荐指数
3
解决办法
8742
查看次数

如何在Firebase存储中创建文件夹?

因此,新的Firebase支持使用Google Cloud Platform进行存储.

您可以images使用以下命令将文件上传到文件夹:

var uploadTask = storageRef.child('images').put(file, metadata);
Run Code Online (Sandbox Code Playgroud)

如果要images/user1234使用代码动态创建子文件夹,该怎么办?

官方样本没有显示如何执行此操作,也没有显示官方指南参考文档.

Firebase控制台是唯一可以手动创建文件夹的位置吗?

javascript firebase firebase-storage firebase-console

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