首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决n+1查询问题?

如何解决n+1查询问题?
EN

Stack Overflow用户
提问于 2017-03-20 03:10:48
回答 1查看 109关注 0票数 1

让我说,我有一个父母/孩子的关系模型与2谷歌数据存储类型。

如果我使用父键查询子表,是否也可以在不执行n+1查询的情况下从父表检索字段?

代码语言:javascript
复制
RequestLedger
key | type   | content | sentTimestamp
123   email    <ssd>     10-10-10


ResultLedger
key               | requestLedger            |to            | deliveredTimestamp | bouncedTimestamp | other
123-xxx@xxx.com     key(request_ledger,123)   xxx@xxx.com     10-10-10

代码

代码语言:javascript
复制
var query = ds.createQuery(env.get('GCLOUD_DATASTORE_NAMESPACE'), resultLedgerKind)
.offset(offset)
.limit(max);

if(parentId){
    query = query.filter('requestLedger', ds.key([requestLedgerKind, parentId]));

}


query.run(function(err, entities) {

  callback(err, entities );
});

上面的查询提供了来自子表的数据和对父类实体的引用,但只提供了父类的键字段。是否可以轻松地同时获得查询中的所有内容?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-21 09:04:41

您可以使用查找方法在一个请求中通过多个实体的键获取它们。剩下的例子是这里,我确信javascript实现有类似的实现。

注意,由于api v1有1000个键的限制,您可以在一个请求中获得。在测试版中就不是这样了。

如果您首先得到子节点,然后查找它们各自的父键,这应该会使您的请求计数返回。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42895235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档