게임정보관리에 대한 질문입니다.

SDK Vesion : 5.5.2

게임정보에관한 질문인데 예를들어 플레이어가 게임도중 새로운아이템을 흭득 하였다면 그 아이템을
Backend.GameData.Insert로 저장하였습니다.

근데 5초뒤 똑같은 아이템을 먹었다고 가정하였을 때 저장한 아이템데이터에 Count라는 컬럼의 갯수를 늘리려고
SendQueue.Enqueue이거나 Backend.GameData.Update로 데이터 보내
Count라는 숫자만 증가하려고 데이터를 보냈습니다.
하지만 실패를 하였습니다.
새로운 데이터를 Insert하고 클라를 한번이라도 끄지않고 그데이터수정을 바로 못하는것인가요?

GetErrorCode() = NotFoundException
IsServerError() = False
GetMessage() = gameInfo not Found, gameInfo를 찾을 수 없습니다.
GetStatusCode() = 404
에로코드들입니다.
중요한건 클라를 끄고 다시 실행했을 때 이 아이템이 한개라도 가지고 있다면 정상적으로 작동을 하게 됩니다.

안녕하세요 개발자님
샌드큐로 로직을 구성했을 경우에는 함수를 호출할 때마다 Queue에 하나씩 쌓이게 됩니다.
그리고 비동기에서 하나의 함수가 요청되고 콜백이 이루어지기까지 다음 함수는 대기하고 있습니다.

그러므로 Insert를 한 후에 다음 Update 함수가 호출될 때에는 이미 Insert의 작업이 완료가 된 것이므로
Insert 작업이 성공했는지 확인 후, 생성된 데이터의 inDate를 구하여 데이터를 수정하면 정상적으로 수정이 됩니다.
indate는 Insert 함수의 리턴 값이나 Get 함수를 통해 데이터의 정보를 얻어 가져올 수 있습니다.

Get함수로 indate 리턴값을 저장하여 아이템을 또 흭득 할 시 이 indate에 불러와 데이터를 수정하게끔 되어있는데도 이렇게 됩니다; Insert이후 서버에 아이템정보가 저장되어있는걸 확인 한 후 다시 그아이템을 먹어보기도 하였습니다. 또한 Insert이후 indate의 데이터값이 서버에 저장되어있는 indate값과 일치한걸 확인하였습니다.

그리고 비동기가 아닌 동기Backend.GameData.Update로 하였을때도 똑같이 에러가 뜹니다.

안녕하세요 개발자님.

Backend.GameData.Update시에 확인되는 에러 공유해주시면 좀 더 자세한 답변이 가능합니다.

아래 코드로 쉽게 리턴값 및 에러 확인이 가능하니 공유해주시면 감사하겠습니다.

var bro = Backend.GameData.Update();
Debug.Log(bro);
    string inDate = _p.inDate;
    Param param = new Param();
    param.Add("Count", _p.Count);

    BackendReturnObject BRO = Backend.GameData.Update(ColumName, inDate, param);
    if (!BRO.IsSuccess())
    {
        Debug.Log("UpdateItemCount Faile!");
        Debug.Log(BRO);
    }

에러는
statusCode : 404
errorCode : NotFoundException
message : gameInfo not found, gameInfo을(를) 찾을 수 없습니다
이렇게나옵니다…

분명 Insert 지나고 나서 서버에 데이터가 들어갔는지 확인한 다음 같은 아이템을 먹었는데 찾을 수 없다고합니다. 하지만 클라를 끄고 아이템을 먹은 후엔 정상적으로 진행은되니깐 더 햇갈리네요;;

로그를 확인해본 결과,
다음과 같이 inDate가 입력되는 것으로 확인이 되는데 Update를 하기 전에 inDate가 정상적으로 출력되는지 확인해주시기 바랍니다.

보내고 있는 값

\"inDate\":\"2021-12-09T09:03:10.354Z\"

정상적인 inDate

2021-12-09T09:03:10.354Z

아… 감사합니다. 제가 좀 착각했나봅니다. 그렇게 출력된다면 해결 할 수 있을거같습니다.

좋아요 1