假设我有一个包含2种谷歌数据存储类型的父/子关系模型。
如果我使用父键查询子表,有没有办法从父表中检索字段而不必进行n + 1次查询?
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
码
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 );
});
上面的查询给出了子表中的数据和父类实体的引用,但只给出了父类的键字段。是否可以轻松地将所有内容同时放回查询中?
答案 0 :(得分:1)
您可以使用查找方法在一个请求中通过其键获取多个实体。其余的例子是here我确信javascript实现有类似的实现。
请注意,由于api v1在一个请求中可以获得1000个密钥的限制。在测试版中,情况并非如此。
如果你先找到孩子,然后查找他们各自的父键,这应该会带回你的请求数。