Skip to main content

Intro

Let's discover 'nestjs-query-simple' in less than 5 minutes.

Getting Started

Get started by using our 'minimal-demo-app'.

What you'll need

  • Node.js version 18.0 or above:
    • When installing Node.js, it's recommended to check all checkboxes related to dependencies.
  • MongoDB (+Compass).
  • Any tool to execute the commands given below (Powershell, Terminal, or any other integrated terminal of your code editor).
  • vc-redist - only at Windows OS.

Get the minimal demo app

  • Clone the nestjs-query-simple repository.
  • Locate the sub-folder 'examples/minimal-demo-app, all explanations below refer to this app.

Install the app

Run this command within the app's root folder:

npm install

Build the app

Run this command within the app's root folder:

npm run build

Run the app

Run this command within the app's root folder:

npm run start

Use the app

Send mutations and queries via GraphQL playground

  • Open a browser and navigate to http://localhost:3000/graphql.
  • Send mutations and queries, like the examples below.
  • You can also track the relevant data changes in your MongoDB (e.g. via Compass).

GraphQL mutations/queries examples

Create single example item:

mutation {
createOneExampleItem(input: {
exampleItem: {
exampleProperty1: "val-a"
}
}) {
id
exampleProperty1
exampleProperty2
}
}

Update single example item:

mutation {
updateOneExampleItem(input: {
id: <id of exists example item>
update: {
exampleProperty1: "val-b"
exampleProperty2: "val-c"
}
}) {
id
exampleProperty1
exampleProperty2
}
}

Delete single example item:

mutation {
deleteOneExampleItem(input: {
id: <id of exists example item>
}) {
id
exampleProperty1
exampleProperty2
}
}

Create multiple example items:

mutation {
createManyExampleItems(input: {
exampleItems: [
{
exampleProperty1: "val-d"
},
{
exampleProperty1: "val-e"
},
{
exampleProperty1: "val-f"
}
]
}) {
id
exampleProperty1
exampleProperty2
}
}

Update multiple example items:

mutation {
updateManyExampleItems(input: {
filter: {
exampleProperty1: {
eq: "OldValue"
}
},
update: {
exampleProperty1: "NewValue"
}
}) {
updatedCount
}
}

Delete multiple example items based on a filter:

mutation {
deleteManyExampleItems(input: {
filter: {
exampleProperty1: {
eq: "ValueToFilter"
}
}
}) {
deletedCount
}
}

Get single example item by ID:

query {
exampleItem(id: <id of exists example item>) {
id
exampleProperty1
exampleProperty2
}
}

Get paginated list of example items with default paging settings:

query {
exampleItems {
pageInfo {
hasNextPage
hasPreviousPage
}
nodes {
id
exampleProperty1
exampleProperty2
}
}
}

Get list of example items with specific filter, sorting, and paging settings:

query {
exampleItems(
paging: {
limit: 10
offset: 0
}
filter: {
exampleProperty1: {
neq: "SomeValue"
}
}
sorting: [
{
field: exampleProperty1
direction: ASC
}
]
) {
pageInfo {
hasNextPage
hasPreviousPage
}
nodes {
id
exampleProperty1
exampleProperty2
}
}
}