小编Jim*_*ane的帖子

使用后端NDB的GAE put_multi()实体

我正在使用后端编写多个实体ndb.put_multi(list_of_entities).

我遇到的问题是,如果我进行查询,那么我就没有结果.如果我将睡眠定时器放置例如1秒,我可以读取我刚写的实体.

例如:

class Picture(ndb.Expando):
    pass

class Favourite(ndb.Expando):
    user_id = ndb.StringProperty(required=True)
    pass

#...make lists with Picture and Favourite kinds
entities = favourites
entities[1:1] = pictures
ndb.put_multi(entities)

favourites = Favourite.query().filter(Favourite.user_id == user_id).fetch(99999, keys_only=True)
logging.info(len(favourites)) #returns 0 in dev_appserver why?
Run Code Online (Sandbox Code Playgroud)

首先假设问题与缓存有关.但是:

在多个密钥或实体上读取NDB实体操作:

高级注释:这些方法与上下文和缓存正确交互; 它们不直接对应于特定的RPC调用.

阅读NDB缓存

上下文缓存

上下文缓存仅在单个传入HTTP请求的持续时间内持续存在,并且仅对处理该请求的代码"可见".它很快; 这个缓存存在于内存中.当NDB函数写入数据存储区时,它还会写入上下文缓存区.当NDB函数读取实体时,它首先检查上下文缓存.如果在那里找到实体,则不会发生数据存储交互.

查询不会在任何缓存中查找值.但是,如果缓存策略这样说(但从不对Memcache),查询结果将写回到上下文缓存中.

嗯,我迷失在这里.一切似乎都没问题.即使从控制台查询我得到正确的总和,但从不在同一个处理程序,无论什么功能等.

我唯一注意到的是,当等待时,time.sleep(1)我得到了正确的结果.这与ndb.put_multi可能无法同步完成的事实有关.如此迷茫....

python google-app-engine app-engine-ndb

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

Twitter列表没有显示正确的推文

Twitter列表不起作用?

嵌入工作正常,但我遇到了一些非常奇怪的事情:并非显示这5个人的所有推文!

为了进一步测试我做了一个[单人测试列表]只有一个人来测试.该列表正常工作,但它不显示该用户的回复.

我在这里理解错了吗?推特列表是不是像团体一样,你可以把人们像家人或教师联系,只看他们的时间表?

关于我为什么不使用列表的一个小页脚说明是因为twitter搜索插件也没有正常工作,所以我没有使用搜索查询,而是相信列表可以解决这个问题,但显然不是.或者Twitter搜索提要和列表不好或者我在这里迷路了.

html javascript twitter widget

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

FIRESTORE:通过文档ID查询collectionGroup

现在我们在 firestore 上有了集合组查询!伟大的。

但是由于一些规则,如何通过Document ID查询集合组呢?

我试过:

return this.afs.collectionGroup('tokens', (ref) => {
      return ref.where(firestore.FieldPath.documentId(), '==', `${this.afAuth.auth.currentUser.uid}`)
    }).valueChanges();
Run Code Online (Sandbox Code Playgroud)

但我得到:

Invalid third parameter to Query.where(). When querying a collection group by FieldPath.documentId(), the value provided must result in a valid document path, but 'JKq2AFqGkkSLHsIVaXz4l3wwmfh1' is not because it has an odd number of segments (1).
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

return this.afs.collectionGroup('tokens', (ref) => {
      return ref.where(firestore.FieldPath.documentId(), '==', `/users/JKq2AFqGkkSLHsIVaXz4l3wwmfh1`)
    }).valueChanges();
Run Code Online (Sandbox Code Playgroud)

但后来我得到 0 个结果

我的代币集合文档 ID 基于我的/users/{userID}

我收集令牌的规则是:

 match /{path=**}/tokens/{userID} {
            allow read, write, create, update, delete: …
Run Code Online (Sandbox Code Playgroud)

firebase firebase-security google-cloud-firestore

5
推荐指数
0
解决办法
512
查看次数

Postgresql IN语句

为什么此查询user_idprofile表中不存在列时删除所有用户?

初始查询:

DELETE FROM users
    WHERE user_id IN (
        SELECT user_id FROM profile
        )
    AND user_id != 35
    AND user_id != 6; 
Run Code Online (Sandbox Code Playgroud)

更具体.

IN语句查询返回:

SELECT user_id FROM profile;

ERROR:  column "user_id" does not exist
LINE 1: SELECT user_id FROM profile;
Run Code Online (Sandbox Code Playgroud)

运行初始查询返回

DELETE 100

为什么会这样?

它不应该在出错时停止执行或返回false或null吗?

运行PostgreSQL Server 9.0

sql database postgresql

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

Firestore + AngularFire如何分页到上一页

抱歉,我已经多次以不同的方式问过这个问题,例如:

但是,没有一个答案能真正说明解决方案或可以理解。

我也浏览了很多教程,例如:

详细说明:

所以这是我到目前为止所做的

let query = ref.orderBy(orderBy, asc ? 'asc' : 'desc').limit(limit);
        if (startAfter) {
          // Thiis works as it should
          query = query.startAfter(startAfter);
        }
        if (endBefore) {
          // This here does not work or give the correct results. I get the first page. 
          query = query.endBefore(endBefore);
        }
        return query;
Run Code Online (Sandbox Code Playgroud)

所以:

query = query.startAfter(startAfter); 可以正常工作。

然而:

query = query.endBefore(endBefore) 在该文件之前没有结束,我认为它已经达到了极限。

pagination firebase angular google-cloud-firestore

3
推荐指数
2
解决办法
499
查看次数

Firestore 的集合组权限

我有这些规则:

match /suuntoAppAccessTokens/{userName} {
      allow create: if request.auth.uid != null && request.auth.token.firebase.sign_in_provider != 'anonymous';
      match /tokens/{userID} {
        allow read, write, create, update, delete: if request.auth.uid == userID && request.auth.token.firebase.sign_in_provider != 'anonymous';
      }
    }

match /{path=**}/tokens/{userID} {
            allow read, write, create, update, delete: if request.auth.uid == userID;
    }

Run Code Online (Sandbox Code Playgroud)

这意味着对于/suuntoAppAccessTokens/dimitrioskanellopoulos/tokens/{userID}当前用户应该具有访问权限的路径。

但是,当我像这样查询集合组时:

return this.afs.collectionGroup('tokens').snapshotChanges();
Run Code Online (Sandbox Code Playgroud)

我收到权限错误。

直接获取 tokes/{userID} 下的文档按预期工作。

我该怎么做才能让当前用户可以运行 collectionGroup 查询并根据我的规则获取他被允许获取的项目?

firebase firebase-security google-cloud-firestore

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

无法将“自定义 blob”保存到 Firestore

在 javascript 中,我从一个数组中创建一个 blob,如下所示:

const a = new Blob([[1,2,3]]);
Run Code Online (Sandbox Code Playgroud)

当我尝试保存这个 blob 时:

this.afs.collection('events').doc(event.getID()).set({data: new Blob([[1,2,3]])}).then((some) => {
      debugger;
    })
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

DocumentReference.set() 使用无效数据调用。不支持的字段值:自定义 Blob 对象(在字段数据中找到)

我应该怎么做才能通过 JS 将 blob 保存到 Firestore?

javascript firebase google-cloud-firestore

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

Firebase云功能退出并显示代码16,什么是错误代码16,在哪里可以找到更多信息?

我在firebase上的一项云功能退出,错误代码为16。

我试图谷歌,找出什么代码,但根本没有运气。

Error: Process exited with code 16
    at process.on.code (/srv/node_modules/@google-cloud/functions-framework/build/src/invoker.js:393:29)
    at process.emit (events.js:189:13)
    at process.EventEmitter.emit (domain.js:441:20)
    at process.exit (internal/process/per_thread.js:168:15)
    at logAndSendError (/srv/node_modules/@google-cloud/functions-framework/build/src/invoker.js:184:9)
    at process.on.err (/srv/node_modules/@google-cloud/functions-framework/build/src/invoker.js:390:13)
    at process.emit (events.js:189:13)
    at process.EventEmitter.emit (domain.js:441:20)
    at emitPromiseRejectionWarnings (internal/process/promises.js:119:20)
    at process._tickCallback (internal/process/next_tick.js:69:34)

Run Code Online (Sandbox Code Playgroud)

在哪里可以找到报告的错误代码,以便我理解为什么我的函数退出?

firebase google-cloud-functions

2
推荐指数
3
解决办法
671
查看次数

Angular 9 服务的抽象类是否需要@injectable 装饰器?

升级到 Angular 9 后,我的一些服务扩展的抽象类会自动使用@injectableAngular 9 迁移指南中所写的装饰。

我的应用程序上的一切正常。

但是我不明白为什么抽象类必须被装饰,因为扩展它们的具体类确实有@injectable装饰器。

我还阅读了这个问题Angular library module injection service with abstract class并建议@injectable从抽象中删除。

那么我应该删除装饰器吗?

这只是将装饰器添加到我的摘要中的 Angular“错误”吗?

此外,我注意到@directive装饰器已添加到用于实现组件的其他抽象类中。

typescript angular angular9

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

批量写入 Firestore 的最大大小是多少(以 MB 为单位)

我有兴趣知道 Firestore 批量写入的最大大小是否为 10MB(即最大 API 请求大小),或者每个文档(例如 1MB 最多 500MB)。或者这并不重要?

firebase google-cloud-firestore

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