让我说,我有一个父母/孩子的关系模型与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 );
});上面的查询提供了来自子表的数据和对父类实体的引用,但只提供了父类的键字段。是否可以轻松地同时获得查询中的所有内容?
发布于 2017-03-21 09:04:41
您可以使用查找方法在一个请求中通过多个实体的键获取它们。剩下的例子是这里,我确信javascript实现有类似的实现。
注意,由于api v1有1000个键的限制,您可以在一个请求中获得。在测试版中就不是这样了。
如果您首先得到子节点,然后查找它们各自的父键,这应该会使您的请求计数返回。
https://stackoverflow.com/questions/42895235
复制相似问题