2013-03-06 10 views
10

Stwierdziłem, że potrzebuję wykonać operację GetMulti z tablicą kluczy, dla których istnieją pewne elementy, ale niektóre nie.GAE Go - Jak używać GetMulti z nieistniejącymi kluczami encji?

Mój obecny kod, poniżej, zwraca błąd (datastore: no such entity).

err := datastore.GetMulti(c, keys, infos)

Więc jak mogę to zrobić? Użyłbym metody "get or insert", ale nie ma jej.

Odpowiedz

15

GetMulti może zwrócić w tym przypadku appengine.MultiError. Przeprowadź przez nią pętlę i poszukaj datastore.ErrNoSuchEntity. Na przykład:

if err := datastore.GetMulti(c, keys, dst); err != nil { 
    if me, ok := err.(appengine.MultiError); ok { 
     for i, merr := range me { 
      if merr == datastore.ErrNoSuchEntity { 
       // keys[i] is missing 
      } 
     } 
    } else { 
     return err 
    } 
} 
+2

możesz skrócić ten blok, jeśli użyłeś asercji typu. jeśli ja, ok: = err. (appengine.MultiError); ok {for {...}} –

+0

Dzięki. Czy to miałeś na myśli? – mjibson

+2

Tak, możesz również usunąć klauzulę else i po prostu zwrócić err w przypadku mniejszej liczby linii :-) –

Powiązane problemy