小编Eri*_*son的帖子

如果启用了持久性,当数据存在于缓存中时,什么算作读取操作?

如果监听器断线超过 30 分钟(例如用户下线),您将被收取读取费用,就像您发布了一个全新的查询一样。

如果启用持久性,这仍然适用吗?

情况一:App离线超过30分钟。启用持久性并从缓存中读取数据。从缓存中读取文档算作读取操作吗?

情况二:App上线但没有添加/修改/删除操作。启用持久性并且所有数据都存在于缓存中。如果没有添加/修改/删除新数据,30 分钟后打开我的应用程序是否会导致读取操作?

Firestore 文档

firebase google-cloud-firestore

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

Firebase 函数在帐户链接上触发

我想在创建用户时将电子邮件信息存储在用户文档中。对于使用电子邮件和密码注册的标准用户,我可以简单地调用auth.user().onCreate并在用户文档上设置电子邮件。对于匿名登录,然后链接他们的电子邮件的用户,我如何获取用户文档中设置的电子邮件?有没有办法只使用 Firestore 触发器来做到这一点?难道一个user().onUpdate函数存在吗?我想避免更新用户文档的客户端代码。

firebase firebase-authentication google-cloud-functions

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

当我从类成员函数返回*this时,为什么要调用我的复制构造函数?

我知道我的副本构造函数和重载运算符在这种情况下是相当随意的,但我找人验证我是否正确使用它们,以及正确使用*.

另外,有人可以告诉我为什么每次从任何重载运算符返回*this或Rectangle类型的对象时都会调用复制构造函数吗?

class Rectangle
{
    private:
        int length;
        int width;
        static int counter;
    public:
        Rectangle(int len = 0, int w = 0)
        {
            length = len;
            width = w;
            counter++;
        }
        ~Rectangle()
            { counter--; }
        static int getCounter()
            { return counter; }

        Rectangle(const Rectangle &);
        Rectangle operator+ (const Rectangle &);
        Rectangle operator= (const Rectangle &);
};

int Rectangle::counter = 0;

Rectangle::Rectangle(const Rectangle &right) : Rectangle()
{
    width = right.width;
    length = right.length;
}

Rectangle Rectangle::operator+ (const Rectangle &right)
{
    width …
Run Code Online (Sandbox Code Playgroud)

c++

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

在新创建的文档上使用Get()时,Firestore规则失败

在新创建的文档上对Firestore规则使用get()会导致返回值为false.如果您等待几秒钟并点击在同一个新文档上调用get()的安全规则,则get()将返回预期值.我在规则和/或代码中遗漏了什么,或者这是Firestore的错误?

service cloud.firestore {
  match /databases/{database}/documents {

    match /budgets/{budgetId} {

      allow read: if resource.data.userId == request.auth.uid;
      allow create: if request.auth.uid == request.resource.data.userId;

      match /accounts/{accountId} {
        allow read, create, update: if userOwnsBudget();  // <--- failing for newly created budget documents
      }

      function userOwnsBudget() {
        return get(/databases/$(database)/documents/budgets/$(budgetId)).data.userId == request.auth.uid;
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)
const data: Budget = {
    userId: userId,
    budgetName: budgetName,
    currencyType: currencyType
};

try {
    const newBudget = await this.afs.collection<Budget>('budgets').add(data);

    const accountsCollection: AngularFirestoreCollection<BudgetAccount> = this.afs.collection<BudgetAccount>('budgets/' + newBudget.id + '/accounts');

    //Insufficient …
Run Code Online (Sandbox Code Playgroud)

javascript firebase angular google-cloud-firestore

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