使用golang在Appengine数据存储区中强制执行密钥唯一性的最佳方法(性能明智)是什么?

时间:2014-01-05 22:22:05

标签: google-app-engine go google-cloud-datastore

我想使用用户输入的字符串作为实体的唯一键。假设用户输入已存在于数据存储区中的密钥,我想返回错误。由于golang数据存储区API只有Put也可以兼作Insert,因此强制执行唯一性约束的最佳方法是什么?

目前我正在尝试......

Query(T).Filter("Key =", key)

...其中key是根据用户输入的值构造的,用于测试是否存在重复,但是2个相同的键似乎在过滤器中使用等号(false)运算符返回=但是{{ 1}}在结果上调用true时。

如何按密钥查询?

2 个答案:

答案 0 :(得分:1)

您应该使用魔术常量__key__按键过滤:

Query(T).Filter("__key__ =", key)

参考文献:

Java API constant values

Python documentation

我同意这有点模糊,而且记录不足。

答案 1 :(得分:1)

按键查询称为“获取”:https://developers.google.com/appengine/docs/go/datastore/entities#Go_Retrieving_an_entity

通过密钥相等进行查询和过滤几乎没有意义。