뒤끝 데이터베이스 복합 조건 Where 에러

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 베이스/채팅/데이터베이스/월드 SDK 버전 :
  • 프로젝트명 :
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

안녕하세요.

await Database.DBClient.From()
.Where(x => x.Itemid == itemId && x.Issold == false)
.ToList();

await Database.DBClient.From()
.Where(x => x.Itemid == itemId)
.Where(x => x.Issold == false)
.ToList();

두개의 where문이
[AuctionTestGuiController] System.Exception: Query failed: failed to execute query: operation error DynamoDB: Query, https response error StatusCode: 400, RequestID: H9B3S1R7U1U0PMNQHPOKJPO1S7VV4KQNSO5AEMVJF66Q9ASUAAJG, api error ValidationException: Invalid FilterExpression: The expression has redundant parentheses;

이런 에러를 발생되고있어서 혹시 사용법이 문제일까 해서 문의합니다!
복합 조건이 아닌 단일 조건에서는 잘 됩니다.

image

뒤끝 개발팀을 통한 별도의 기술지원이 작업이 필요한 요청은 help@backnd.com 으로 문의해주시기 바랍니다.

안녕하세요 개발자님,
확인 시 첫번째 공유해주신 코드와 같이 &&을 통해 복합 조건을 조회할 수 있습니다.
내부 테스트시에도 이상 없이 조회가 이루어지고 있는 상황으로 다시한번 확인 부탁드리며,
계속해서 조회가 이루어지지 않으시는 경우 관련 코드 전문을 공유해주시면 감사하겠습니다.

테스트 코드 첨부합니다!
에러가 나오는 함수는 AuctionManager.Instance.GetAuctionItems(int) 입니다!

좋아요 1

추가로,
위의 복합 조건이 아닌 단일조건으로 검색했을때 유니티 에디터에서는 정상적으로 조회가 되는데 AOS 빌드 하면
ArgumentNullException: Value cannot be null.
Parameter name: value
BACKND.Database.BTask1[T].get_Result () (at <00000000000000000000000000000000>:0) GameBerry.AuctionManager.GetAuctionItems (System.Int32 itemId) (at <00000000000000000000000000000000>:0) Cysharp.Threading.Tasks.UniTask1[T].ToString () (at <00000000000000000000000000000000>:0)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask2[TStateMachine,T].GetResult (System.Int16 token) (at <00000000000000000000000000000000>:0) GameBerry.UI.CheatDialog.GetAuctionItems () (at <00000000000000000000000000000000>:0) Cysharp.Threading.Tasks.UniTaskCompletionSourceCore1[TResult].TrySetException (System.Exception error) (at <00000000000000000000000000000000>:0)
GameBerry.AuctionManager.GetAuctionItems (System.Int32 itemId) (at <00000000000000000000000000000000>:0)
System.Collections.Generic.NullableEqualityComparer1[T]..ctor () (at <00000000000000000000000000000000>:0) Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask1[TStateMachine].GetResult (System.Int16 token) (at <00000000000000000000000000000000>:0)
Cysharp.Threading.Tasks.UniTaskExtensions+<>c.b__16_0 (System.Object state) (at <00000000000000000000000000000000>:0)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore1[TResult].TrySetException (System.Exception error) (at <00000000000000000000000000000000>:0) GameBerry.UI.CheatDialog.GetAuctionItems () (at <00000000000000000000000000000000>:0) Cysharp.Threading.Tasks.UniTaskCompletionSourceCore1[TResult].TrySetException (System.Exception error) (at <00000000000000000000000000000000>:0)
GameBerry.AuctionManager.GetAuctionItems (System.Int32 itemId) (at <00000000000000000000000000000000>:0)
Cysharp.Threading.Tasks.<>c:b__16_0(Object)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore1:TrySetException(Exception) GameBerry.UI.<GetAuctionItems>d__32:MoveNext() Cysharp.Threading.Tasks.UniTaskCompletionSourceCore1:TrySetException(Exception)
GameBerry.d__5:MoveNext()

해당 애러가 나옵니다.

Inser할때도 비슷한 양상의 에러가 나오긴하는데 콘솔에 확인해보면 정상적으로 Insert는 됩니다.
혹시 AOS 빌드시에 주의할점이 있을까요?

데이터베이스 조건문 처리 과정에서 발생하는 문제를 확인하여 수정이 진행되었습니다.
다시한번 해당 호출을 진행하여 확인해주실 수 있으실까요?

이제 복합조건 처리가 됩니다!

혹시 AOS건도 확인이 가능하실까요…?

현재도 계속 발생하는지와 함께
해당 에러가 발생하는 관련 코드도 공유해주실 수 있을까요?

넵 현재도 발생하고 에러가 발생하는 코드는 위에 올렸던 AuctionManager입니다!

UniTask 를 BACKND.BTask 로 변경하여서 테스트를 진행해주실 수 있을까요?
BACKND.BTask는 뒤끝에서 별도로 개발한 UniTask 로 사용 방법은 동일합니다.

만약 안내드렸음에도 계속 문제가 발생하는 경우는 아래 코드를 통해 확인되는 로그를 공유해주시면 감사하겠습니다.

public async UniTask<List<Auction>> GetAuctionItems(int itemId)
  {
      try
      {
          var btask = Database.DBClient.From<Auction>()
              .Where(x => x.Itemid == itemId && x.Issold == false)
              .ToList();

          var result = await btask;
          Debug.Log($"GetAuctionItems success: {result?.Count} items");
          return result;
      }
      catch (Exception ex)
      {
          Debug.LogError($"GetAuctionItems failed: {ex.GetType().Name}: {ex.Message}\n{ex.StackTrace}");
          throw;
      }
  }

확인 감사합니다!
AOS에서는 BTask로도 계속 애러를 발생해 보여주신 코드로 진행하고 로그 공유드립니다!

GetAuctionItems failed: ArgumentNullException: Value cannot be null.
Parameter name: value
at BACKND.Database.BTask`1[T].get_Result () [0x00000] in <00000000000000000000000000000000>:0
at GameBerry.AuctionManager.GetAuctionItems_Uni (System.Int32 itemId) [0x00000] in <00000000000000000000000000000000>:0
UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
GameBerry.<GetAuctionItems_Uni>d__6:MoveNext()

사용한 코드도 같이 올립니다!

public async UniTask<List> GetAuctionItems_Uni(int itemId)

    {

        try

        {

            var btask = Database.DBClient.From<Auction>()

                .Where(x => x.Itemid == itemId && x.Issold == false)

                .ToList();

            var result = await btask;

            Debug.Log($"GetAuctionItems success: {result?.Count} items");

            return result;

        }

        catch (Exception ex)

        {

            Debug.LogError($"GetAuctionItems failed: {ex.GetType().Name}: {ex.Message}\n{ex.StackTrace}");

            throw;

        }

    }

혹시 원인이 나왔을까요…?

현재 관련내용 확인중에 있습니다.
확인 후 답변드리겠습니다.

좋아요 1

이용 기기 환경에 따라 일부 문제가 발생 하는 현상을 확인하여 픽스를 진행하였습니다.
패키지 매니저를 통해 데이터베이스 업데이트를 진행하신 후 다시한번 시도해 주시면 감사하겠습니다.
만약 업데이트 후에도 문제가 발생하시는 경우 테스트를 진행하신 기기 및 환경정보의 공유를 요청드립니다.

패키지 업데이트 후 잘 동작 합니다! 대응해주셔서 감사합니다~

좋아요 1