猿问

谷歌应用引擎去数据存储使用密钥检查实体存在

给定实体的 stringId 键,如何检查数据存储中是否有相应的实体。我不想完全获取实体。我想检查实体是否存在。

如果我获取完整实体以检查其存在,是否会对性能产生影响?或者,还有更好的方法?


var Person struct {

   stringId string //string id which makes the key

   //many other properties.

}


//insert into datastore

_, err := datastore.Put(ctx, datastore.NewKey(ctx, entityKind, stringId, 0, nil), entity)

//retrieve the entity

datastore.Get(ctx, datastore.NewKey(ctx, entityKind, stringId, 0, nil), entity);


有没有更好的方法来检查实体是否存在,而不是检索给定 stringId 的完整实体?


大话西游666
浏览 172回答 1
1回答

翻翻过去那场雪

要仅检索键添加KeysOnly()到查询的末尾,即q := datastore.NewQuery(entityKind).Filter(...).KeysOnly()是的,仅键查询应该更快,引用自文档:仅键查询仅返回结果实体的键而不是实体本身,与检索整个实体相比,延迟和成本更低顺便说一句,要通过其键检索实体,您还可以使用特殊属性__key__,即qKey := datastore.NewKey(ctx, entityKind, stringId, 0, nil) q := datastore.NewQuery(entityKind).Filter("__key__ =", qKey)
随时随地看视频慕课网APP

相关分类

Go
我要回答