# Query the blockchain using postchain-client · Your first Rell app on Chromia · Learn Chromia

> This lesson shows you how to query the Chromia blockchain for information about transactions and about the current state of your dapp's table.

Source: https://chromia.com/learn/book-review/build-client/query-blockchain/

Your first Rell app on ChromiaLesson 24 of 26

1. [01Your first Rell app on Chromia](https://chromia.com/learn/book-review/introduction/)
2. [02Set up your project](https://chromia.com/learn/book-review/setup/)
3. [03Rell project structure](https://chromia.com/learn/book-review/rell-structure/)

Part 1: Define your first entity

1. [04Overview](https://chromia.com/learn/book-review/book-entity/)
2. [05Create your first entity](https://chromia.com/learn/book-review/book-entity/tables/)
3. [06Add your first operation](https://chromia.com/learn/book-review/book-entity/basic-operations/)
4. [07Query every book](https://chromia.com/learn/book-review/book-entity/write-queries/)

Part 2: Add a related entity

1. [08Overview](https://chromia.com/learn/book-review/book-review-entity/)
2. [09Define the book review entity](https://chromia.com/learn/book-review/book-review-entity/tables/)
3. [10Add an operation for creating book reviews](https://chromia.com/learn/book-review/book-review-entity/basic-operations/)
4. [11Query all reviews for a book](https://chromia.com/learn/book-review/book-review-entity/write-queries/)

Part 3: Checking and validating inputs

1. [12Overview](https://chromia.com/learn/book-review/input-verification/)
2. [13Verify inputs](https://chromia.com/learn/book-review/input-verification/input-verification/)
3. [14Return structured results from queries](https://chromia.com/learn/book-review/input-verification/structure/)

Part 4: Signing transactions and filtering queries

1. [15Overview](https://chromia.com/learn/book-review/sign-transaction/)
2. [16Sign a transaction](https://chromia.com/learn/book-review/sign-transaction/sign-transaction/)
3. [17Filter and sort query results](https://chromia.com/learn/book-review/sign-transaction/structure/)

Part 5: Blockchain state and transactions explained

1. [18Overview](https://chromia.com/learn/book-review/blockchain-transactions/)
2. [19How blockchain state and transactions work](https://chromia.com/learn/book-review/blockchain-transactions/query-transaction/)
3. [20Walking through an example](https://chromia.com/learn/book-review/blockchain-transactions/example/)

Part 6: Create the client

1. [21Overview](https://chromia.com/learn/book-review/build-client/)
2. [22Prerequisites](https://chromia.com/learn/book-review/build-client/prerequisites/)
3. [23Establishing a connection to Chromia](https://chromia.com/learn/book-review/build-client/sign-transaction/)
4. [24Query the blockchain using postchain-client](https://chromia.com/learn/book-review/build-client/query-blockchain/)
5. [25Complete the example](https://chromia.com/learn/book-review/build-client/complete-example/)

1. [26What’s next?](https://chromia.com/learn/book-review/what-next/)

[Learn](https://chromia.com/learn/)[Your first Rell app on Chromia](https://chromia.com/learn/book-review/)

24 / 26Part 6: Create the clientBeginner

# Query the blockchain using postchain-client

This lesson shows you how to query the Chromia blockchain for information about transactions and about the current state of your dapp's table.

`postchain-client` keeps queries simple. The example below fetches every book and walks through how the call works.

Start by declaring a `Book` type to describe each book's data:

typescript

```
type Book = {
  isbn: string;
  title: string;
  author: string;
};
```

Then add a function that fetches all books and prints them:

typescript

```
const getAllBooks = async () => {
  const bookList = await client.query<Book[]>("get_all_books", {});
  console.log("Book list:", bookList);
};
```

The function runs the query through the `client` and its `query` command. You pass the expected return type as a generic, here `Book[]`.

### Function arguments

#### First argument: `queryFunctionName`

The name of the query function on the blockchain. It matches a function in your Rell script that returns every book record.

#### Second argument: `queryArguments`

Passing an empty object (`{}`) means the query runs without arguments. When a blockchain function needs input to filter or process its results, you put those parameters in this object.

## Handling the response

`client.query` returns a promise. Once it resolves, you get an array of books (`Book[]`) that you can display, process, or use however your application requires. This example logs them to the console.

Call `getAllBooks();` from your main function as shown below, then run the client again to see the book you added. To restart and test the example from a clean state, run `chr node start --wipe`, which starts a new node with no existing data.

typescript

```
async function main() {
  client = await createClient({
    nodeUrlPool: "http://localhost:7740",
    blockchainRid: blockchainRID,
  });

  console.log("Creating a new book transaction");
  await client.signAndSendUniqueTransaction(
    { name: "create_book", args: ["ISBN1", "Chromia 101", "John Doe"] },
    bookKeeperSignatureProvider
  );

  getAllBooks();
}
```

Written for this site from Chromia’s public course. Code samples are the course’s own.

[← Previous**Establishing a connection to Chromia**](https://chromia.com/learn/book-review/build-client/sign-transaction/)[Next →**Complete the example**](https://chromia.com/learn/book-review/build-client/complete-example/)

On this page

* [Handling the response](#handling-the-response)
