2012-11-29 6 views
0

데이터 저장소에서 모델 (종류)의 둘 이상의 peoperties (필드)를 기반으로 고유 한 키를 만드는 방법.둘 이상의 속성을 기반으로 Datastore에서 키를 만드는 방법

여기에는 4 개의 필드 이름, 장치, ID, 데이터가 있습니다. 이제는 3 개의 필드, 즉 name, device, id를 기반으로 키를 만들고 싶습니다. 데이터가 올 때마다 키가 이미 해당 데이터에 대해 존재한다면 그 키에 대해 대체 될 것입니다. 그렇지 않으면 새 키가있는 새 데이터 데이터가 삽입됩니다. .in.이 방식으로 내가 DB 히트 (즉 내가 모델의 키에 대한 데이터가 존재하는지 여부를 확인하는 데 필요한 그 히트 필요하지 않습니다 즉, 이미 존재하는 경우 데이터 자체를 교체합니다 newone 레코드를 삽입합니다)
어떻게 3 키를 사용하여이 키를 만들 수 있습니까?

+2

당신이 키를 제공하지 않으면, 당신은 고유 키를 얻을 것이다. 이런 식으로 모든 풋은 독특합니다. 고유 한 키 (필드 연결)를 작성하면 get_or_insert로 키가 고유한지 확인할 수 있습니다. – voscausa

+0

당신이하려고하는 것이 조상 관계를 만드는 것이라면 분명히 할 수 있을까요? – Sologoub

+0

여기 네 개의 필드 이름, 장치, ID, 데이터가 있습니다 – yasir

답변

1

분명히 밝혀 질 위험이있는 가장 단순한 대답은 세 개의 필드를 연결하는 단일 키를 만드는 것입니다. 세 개의 필드는 어떤 구분 기호로도 표시 할 수 없습니다. 자바에서는, 예를 들어,의 라인을 따라 뭔가 : 그것은 작동하고

String delimiter = ":"; 
String key = name + delimiter + device + delimiter + id; 
+0

이제 고유 키를 만들었습니다. 이제이 고유 키를 Datastore의 고유 (기본값) 필드 인 key_name에 전달합니다. key_name = game_code + game_version + device_type + device_id EventLogModel (key_name = key_name_, game_code = game_code, game_version = game_version, device_type = device_type, device_id = device_id, events = events) .put() – yasir

0

는 지금은 지금은 고유의 (기본) 필드가 데이터 저장소에있는 KEY_NAME이 누구와도 바꿀 수없는 다이애나 키를 통과, 고유 키를 만들었습니다.

key_name_ = game_code+game_version+device_type+device_id 

EventLogModel(**key_name** = key_name_, game_code = game_code, game_version = game_version, device_type = device_type , device_id = device_id , events=events).put() 

관련 문제