2013-03-06 20 views
10

Tôi thấy mình cần thực hiện thao tác GetMulti với một loạt các khóa mà một số thực thể tồn tại, nhưng một số thì không.GAE Go - Cách sử dụng GetMulti với các khóa thực thể không tồn tại?

Mã hiện tại của tôi, bên dưới, trả về lỗi (datastore: no such entity).

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

Vậy làm cách nào tôi có thể thực hiện việc này? Tôi muốn sử dụng phương thức "lấy hoặc chèn", nhưng không có phương pháp.

Trả lời

15

GetMulti có thể trả lại appengine.MultiError trong trường hợp này. Lặp lại điều đó và tìm kiếm datastore.ErrNoSuchEntity. Ví dụ:

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

bạn có thể rút ngắn khối đó nếu bạn đã sử dụng xác nhận loại. nếu tôi, ok: = err. (appengine.MultiError); ok {for {...}} –

+0

Cảm ơn. Đó có phải ý của bạn? – mjibson

+2

Bạn cũng có thể bỏ mệnh đề kia và chỉ trả về một dòng ít hơn :-) –

Các vấn đề liên quan