如何在异步保存父/子实体时处理父实体?

时间:2014-07-05 10:21:43

标签: google-app-engine google-cloud-datastore

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实例,而它的父实例尚未保存,会发生什么。它会引发异常还是允许这样做?

1 个答案:

答案 0 :(得分:0)

如果记录实体已存在,则此代码不会出现任何问题,因为此实体具有完全形成的密钥。

如果记录实体是新的,则必须先将其放在可以将其密钥用于子实体之前。你会得到一个例外。