상황 설명 :
나와 다른 유저가 있고, 나의 요청으로 다른 유저의 데이터(DB)에 변경이 필요하게 되었습니다.
하지만, 다른 유저가 서버에 접속하고 있을 때는 데이터의 변경이 되지만, 접속하지 않은 상태에서는 데이터가 변경이 되지 않습니다.
테스트 내용:
m_dbClient->RequestNonExclusiveSnapshotDataByQuery(...)
이 함수로 접속하지 않은 유저의 데이터를 호출하면, OnNonExclusiveSnapshotDataComplete
콜백 함수를 통해서 가져올 수 있다는 것은 확인하였습니다.
하지만, 여기서 읽어 들인 유저의 데이터를 변경해서 Update 를 해도 실제로 반영이 되지 않더군요. 그리고, 다른 유저의 UUID 를 알고 있다고 하더라도 m_dbClient->GetClonedLoadedDataByUUID(..)
함수를 통해서 데이터를 가져올 수는 없더군요.
위와 같은 상황일 때, 다른 유저의 데이터를 변경 및 추가를 어떻게 하면 될까요?
// 검색된 다른유저
CPropNodePtr childNode = args.m_items[0].m_loadedData->GetRootNode();
// 검색된 유저의 InviteFriendInfo 테이블에 새로운 항목 추가
CPropNodePtr newInviteFriendInfo = CPropNodePtr(new CPropNode(L"InviteFriendInfo"));
newInviteFriendInfo->Fields[L"OwnerUUID"] = childNode->GetUUID();
newInviteFriendInfo->Fields[L"RootUUID"] = childNode->GetUUID();
newInviteFriendInfo->Fields[L"UserID"] = rc->m_userInfo.UserID.GetString();
newInviteFriendInfo->Fields[L"Name"] = rc->m_userInfo.m_name.GetString();
newInviteFriendInfo->Fields[L"CurTrophy"] = rc->m_userInfo.m_curTrophy;
newInviteFriendInfo->Fields[L"ActiveNamecardItemID"] = rc->m_userInfo.m_activeNamecardItemID;
ErrorInfoPtr outerror = ErrorInfoPtr(new ErrorInfo);
m_dbClient->BlockedAddData(childNode->GetUUID(), childNode->GetUUID(), newInviteFriendInfo, 30000, outerror)