'Not getting count according to filter in GraphQL amplify queries

Getting Scanned count but not count of data according to filter

count: null
items: [{id: "bcd75096-7fd9-4e9d-8675-6877f0609ac2", name: "dxfrdhjkhklklkl", description: "dgdxrfg",…},…]
0: {id: "bcd75096-7fd9-4e9d-8675-6877f0609ac2", name: "dxfrdhjkhklklkl", description: "dgdxrfg",…}
1: {id: "52f6ff60-fc07-4631-a1fb-b039f376ff21", name: "ghnfgyhj", description: "gyhkjmuhjolk",…}
2: {id: "f73dfb37-2778-4b87-88c7-e6f9f5b5c931", name: "drftgserty", description: "trse54rte54ty",…}
3: {id: "6df9f5c2-ec06-4e70-b5e2-133cb0d8e958", name: "tygujghukuh", description: "tuyjyuikuolnh",…}
4: {id: "9360a766-ac89-420c-881b-2b3089bcca7f", name: "kl;", description: "vcbghnjmk,l", is_active: true,…}
5: {id: "c0dcbaff-37d4-4e4c-9375-584ff7110d77", name: "dfhgbdcb", description: "dfxvcx", is_active: true,…},...
scannedCount: 100

I have followed these tutorials to get count HOW TO COUNT THE NUMBER OF RESULTS WITH AWS AMPLIFY DYNAMODB AND GRAPHQL

Filter

      var body = {
        filter: {
          is_active: {
            eq: true
          }
        }
      }

Query to get list of todos

export const listTodos = /* GraphQL */ `
  query ListTodos(
    $filter: ModelTodoFilterInput
    $limit: Int
    $nextToken: String
  ) {
    listTodos(filter: $filter, limit: $limit, nextToken: $nextToken) {
      count
      items {
        id
        name
        description
        is_active
        createdAt
        updatedAt
      }
      scannedCount
    }
  }
`;

GraphQl shema

type Todo @model {
  id: ID!
  name: String!
  description: String!
  is_active: Boolean
}

type ModelTodoConnection {
  items: [Todo]
  scannedCount: Int
  count: Int
  total: Int
}

And IF I set limit to 5 and it will send back scannedCount 5 if when I have total data in database around 110. I want to count data where is_active: { eq: true }



Solution 1:[1]

Check out the package I wrote to solve this issue: https://github.com/multimeric/AmplifyCountDirective.

After following the installation instructions, to solve your issue I would change the schema to this:

type Todo @model @count {
  id: ID!
  name: String!
  description: String!
  is_active: Boolean
}

Then you can query the count using a GraphQL query such as:

{
    countTodo(filter: {
        is_active: {
            eq: true
        }
    })
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Migwell