Skip to main content

query

Introduction

query method performs query request using aws-sdk QueryCommand.

Items in QueryCommandOutput is fully typed based on your Schema declaration.

execute

query takes 2 arguments:

  1. (required) an object which includes:
    • item primaryIndex
    • optionnally KeyConditionExpression
    • optionnally Condition expression which will perform FilterExpression
  2. options (optionnal)
const res = await User.query(
{
groupId: "group-1", // Schema primaryIndex
// Schema sortKey
userId: {
$startsWith: "user-",
},
// FilterExpression
age: {
$gt: 22
}
},
{ ReturnConsumedCapacity: "TOTAL" }
);

res.Items[0].firstname;

options

options is an object which accepts QueryCommandInput options and DynamoQL specific options.

exec

exec boolean directive to execute or not the actual request.
When false query will return QueryCommandInput object.

import type { QueryCommandInput } from "@aws-sdk/client-dynamodb";

const cmd: QueryCommandInput = await User.query(
{
groupId: "group-1"
},
{ exec: false }
);

Select

Select accepts an array of attributes which produces a ProjectionExpression, or "ALL" | "COUNT".

const res = await User.query(
{
groupId: "group-1"
},
{ Select: ["id", "isActive"] }
);

note

Select affects QueryCommandOutput type.

const { Items } = await User.query(
{
groupId: "group-1",
},
{ Select: ["id", "isActive"] }
);

Items[0].firstname; // Property 'firstname' does not exist on type { id: string; isActive?:boolean } ...
const res = await User.query(
{
groupId: "group-1",
},
{ Select: "COUNT" }
);

res.Items; // Property 'Items' does not exist on type QueryCommandOutput

getterInfo

getterInfo allows you to pass any value to your Schema get function's third argument.

const res = await User.query(
{
groupId: "group-1",
},
{ getterInfo: { forFrontend: true } }
);