Query from EVM or Solana
It's possible to read responses from EvmApi
and SolApi
in three different ways: .toJson()
, .raw
, .result
, or using .format()
for default formatting type.
Using the SDK is the simplest way to query blockchain data. This section demonstrates how to implement the API calls.
Please head over to API references to see the full power of the APIs and all possible methods.
Querying the APIs can be done via the EvmApi
and SolApi
modules as follows:
import Moralis from 'moralis'
const result1 = await Moralis.EvmApi.'<DOMAIN>'.'<METHOD>'
const result2 = await Moralis.SolApi.'<DOMAIN>'.'<METHOD>'
See the SDK reference for all the possible domains and methods.
The returned value is an ApiResultAdapter
instance with the following methods:
.result
.raw
.next()
for paginated responses.pagination
for paginated responses
.result
Returns data with all the internal data types.
Use this method when you want to run logic on the returned data, as it comes with a lot more properties/utilities compared to the .raw()
result:
import { EvmChain } from '@moralisweb3/common-evm-utils';
const response = await Moralis.EvmApi.token.getWalletTokenBalances({
chain: EvmChain.ETHEREUM,
address: '0xa9C4c85DD0495E32D08EF64d51fDEB35D200EDfe',
})
// An array of Erc20Value
const balances = response.result
console.log(balances[0].token.contractAddress.equals("0x01be23585060835e02b77ef475b0cc51aa1e0709"))
//console output:
true
console.log(balances[0].value)
//console output:
"20.0"
console.log(balances[0].amount)
//console output:
BigNumber<20000000000000000000>
.raw
Returns raw data as it is; it comes directly from the API.
Use this method if you want the data as it was in v1 of the SDK. This will output the data without any formatting, and the types are different than the result from .result
. This method is not recommended (as it lacks a lot of utilities, validations, and formatting) and should only be used when you want to migrate from the v1 version of the SDK:
import { EvmChain } from "@moralisweb3/common-evm-utils";
const balances = await Moralis.EvmApi.token.getWalletTokenBalances({
chain: EvmChain.ETHEREUM,
address: "0xa9C4c85DD0495E32D08EF64d51fDEB35D200EDfe",
});
console.log(balances.raw)[
//console output:
{
token_address: "0x01be23585060835e02b77ef475b0cc51aa1e0709",
name: "ChainLink Token",
symbol: "LINK",
logo: null,
thumbnail: null,
decimals: 18,
balance: "20000000000000000000",
}
];