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 } }
);