2014-07-05 1 views
1
records_to_put = [] 
events_to_put = [] 

record = Record.get_or_insert(json_record['record_id'], ...) 
records_to_put.append(rec) 

event = Event.get_or_insert(json_event['event_id'], parent=record.key) 
events_to_put.append(event) 

ndb.put_multi_async(records_to_put) 
ndb.put_multi_async(events_to_put) 

Event은 항상 Record의 하위 항목입니다. 비동기 특성으로 인해 event 인스턴스가 먼저 저장되고 상위 인스턴스가 아직 저장되지 않은 경우 어떻게됩니까? 예외가 발생하거나 허용됩니까?상위/하위 엔티티를 모두 비동기 적으로 저장할 때 상위 엔티티를 처리하는 방법은 무엇입니까?

답변

0

레코드 엔터티가 이미있는 경우이 엔터티에 완전히 구성된 키가 있으므로이 코드에 아무런 문제가 없습니다.

레코드 엔티티가 새로운 경우 먼저 해당 엔티티에 대한 키를 사용하여 하위 엔티티에 사용할 수 있습니다. 예외가 발생합니다.

+0

id/key_name을 수동으로 할당하면 부모 앞에 안전하게 자식을 만들 수 있습니다. –

+0

@TimHoffman 질문을 업데이트하고 ID를 삽입하는 방법을 추가했습니다. 이 경우 나는 안전해야합니다. – Houman

+0

예, 상위 키가 자동으로 생성되지 않으면 항상 상위 키의 전체 키를 갖게됩니다. 그것이 아이들을 처음부터 쓰지 못하게하는 유일한 방법입니다. –

관련 문제