1

我正在 GAE 上写一个 Go 应用程序我有一个类型叫做Connection{Token, ToAdress, FromAdress}

我想将它存储在数据存储中,以便我可以通过 GetConnectionByT(Token string) 但也可以通过 GetConnectionByA(FromAdress,ToAdress string)

这样做的最佳方法是什么?现在我的 Connect 类型有两个不同.key()的功能,每次添加时我都会插入带有不同键的重复条目,但这感觉真的很不对:)

datastore.NewQuery("Connection").Filter要走的路吗?接缝那个一键应该更快更便宜?但如果不是,我该如何过滤多个字段?

4

1 回答 1

1

如果您查看datastore.Query.Filter 的文档,您会注意到多个过滤器是 ANDed 在一起的。所以你可以做这样的事情:

q := datastore.NewQuery("Connection").
    Filter("FromAddress =", a1).
    Filter("ToAddress =", a2).
    Order("-FromAddress")

如果您有相关实体的密钥,那么是的,使用密钥可能会更快。但是,从您问题中的描述中很难分辨。

于 2013-02-23T22:20:08.660 回答