Solana: In Anchor, how can I check if an account is initialized or not before accessing its fields to avoid AccountNotInitialized errors?
black, initiated li ackunt solana with yakari
In your anchor program you are checked, free with accountinotiniasis to give you a demand for access to fields that have not been initiated. To solve this problem, we can use the increased functional function of the Library of the Enzyme Program to keep ucemeled notes.
SHAG 1: Uthetn post Initiation Jakore
It is necessary to check, intimate casting record, you must initiate it, use an anchor InicCount. You can do it, that is, it is depicted by a non -touching library and a new copy of the InitiacCountations. Here’s the primer:
`Typescript
Import {Inicaccounses} From the Anchor Program;
Import {SOOLAPROGRIGRIENT} from ‘@solana program/client’;
CONST ACCOUND = ‘Your_account_id’; // from the square identifier
CONST programad = ‘your_program_id’; // Change the Idyifter app
Parameters CONST: INISACCONIONS = {
Clawiaturation: [programid],
Web: Process.env.Solana_node_url,
};
CONST SOOLAPROGRIENT = NEW SOOOPROPRORGRIENT (Process.env.Solana_Key);
`
SHAG 2: Check, initiated li uchold
To check, initiated staff, you can use the isaccounitialized feature anchor. This feature is logical, indicative, it was a fixed record or not. Here’s the primer:
`Typescript
Async feature initizaccount (account: string) {
Ask {
CONS result = Wat anchorprogram.isaccountinitialized (accountid);
Result of vozurat;
} Catch (error) {
Console.error (‘oshchyk ucotic records initialization:’, swing);
Return the bed;
}
}
`
** Red
After checking, if you have a scheduled record, you can rely on the composition of its initiation. In this feature you can use an anchor “Sendnotification” feature:
`Typescript
Async’s Initicaccount (Accountid: string) {
Ask {
// Create a specified initiation
CONST MESSAGE = {
Signator: Process.env.Solana_Signer, // Get Beltic Acquit Key with Solan Signer
Uchol Write: Accontid,
Parameters: [],
};
// screen
Wait for anchorprogram.sendnotification ({{{{{{{{{{{{{
Identifier: ‘your_init_message_id’, // from Valifer or
Data: JSON.Stringify (COOD),
});
} Catch (error) {
Console.error (‘oshchyk ucotic records initialization:’, swing);
Return the bed;
}
}
`
** Shag 4: Tie Uchol writing instead of each other
Following the initiative initiative, the income you can check is initiated using the Isaccountinitialized anchor. If the Ucele did not write, that is “account” scores “. This is the primer:
`Typescript
ASYNC Function Grandiotism (Accountid: String) {
Ask {
CONS result = Wat anchorprogram.isaccountinitialized (accountid);
if (! result) {
Console.error (‘Ucholy entry is not intrinsic:’, account);
// Immediately recorded, not initiated …
}
} Catch (error) {
Console.error (‘oshchyk ucotic records initialization:’, swing);
}
}
`
I pick all the way
Here’s the primer you can collect everything to start so -called yes –
`Typescript
Import {Inicaccounses} From the Anchor Program;
Import {SOOLAPROGRIGRIENT} from ‘@solana program/client’;
CONST ACCOUND = ‘Your_account_id’; // from the square identifier
CONST programad = ‘your_program_id’; // Change the Idyifter app
Parameters CONST: INISACCONIONS = {
Clawiaturation: [programid],
Web: Process.env.Solana_node_url,
};
CONST SOOLAPROGRIENT = NEW SOOOPROPRORGRIENT (Process.env.Solana_Key);
Async feature initizaccount (account: string) {
Ask {
CONS score = wat anchorprogram.