2013-01-02 22 views
5

Google AppEngine NDB Tài liệu cho bản đồ() cho rằng: "Tất cả các tùy chọn truy vấn đối số từ khóa được hỗ trợ"đồ NDB (callback, produces_cursors = True)

Tuy nhiên, tôi đã cố gắng sử dụng produces_cursors=True trên map() và tôi không nhận lại con trỏ.

map(callback, pass_batch_into_callback=None, merge_future=None, **q_options) 

Tôi muốn sử dụng map() vì tôi có thể đặt gọi lại cho một tasklet.

https://developers.google.com/appengine/docs/python/ndb/queryclass#kwdargs_options

Edit - Cung cấp các mẫu mã:

@ndb.tasklet 
def callback(user): 
    statistics = yield ndb.Key(Statistics, user.key.id()).get_async() 
    raise ndb.Return(user, statistics) 

result = User.query().map(callback, produces_cursors=True) 
+0

Bạn có thể cung cấp đoạn mã không? – bossylobster

+0

Chắc chắn @bossylobster, tôi đã thêm một số mã mẫu. – Chris

+0

Thực tế là bạn đúng, 'tasklets.MultiFuture' chỉ trả về một danh sách (http://code.google.com/p/appengine-ndb-experiment/source/browse/ndb/tasklets.py?r=437f5437d9fba7b1c470d56ed2fdf5633d406730#562) và 'map_query' không giữ bất kỳ thông tin con trỏ nào xung quanh. – bossylobster

Trả lời

4

Ví dụ dường như có một lỗi đánh máy - cờ đúng là produce_cursors, không produces_cursors.

Nhưng con trỏ chỉ được cung cấp khi bạn sử dụng trình lặp, không phải với map(). Hãy xem ví dụ về trình lặp không đồng bộ; đó là một chút công việc nhưng bạn chắc chắn có thể sử dụng nó để tự tạo một tasklet cho mỗi kết quả.