getNFTs() will not update when token URIs change

I want to implement a reveal functionality in an NFT project, I have a placeholder uri setup and did an override on the standard tokenURI() function in solidity such that will either return the placeholder or the actual token uri depending on whether an _isRevealed bool is true or not. I have this setup and I know that it works. I call tokenURI(tokenId) with web3 and It will switch between the uris like I expect. I then call getNFTs() and display them with some react that I slapped together for testing. But the uri that gets displayed will not change. So if I mint the token when _isRevealed is true, it will display the actual uri, but will not change if I set _isRevealed to false in the smart contract after I’ve minted it. Similarly, if I mint the NFT when _isRevealed is false it displays the placeholder uri like I expect, but will not change to the correct uri when I set it to true. I look at the metadata that getNFTs() brings back and the metadata isnt changing which makes me believe that getNFTs() calls from the database. Is that correct? If so, what would be the best way to go about updating the EthNFTOwners database with the correct uris?

I realize that was alot so I’m happy to answer any questions.



Currently Moralis has an internal database with NFTs metadata, and that metadata is not updated realtime because most NFTs have immutable metadata and retrying to access every metadata url every time would be time consuming.
In your particular case, you could read the metadata yourself calling the smart contract function to get the metadata uri, also in your particular case, if you already know what metadata you have for those NFTs you could save that metadata yourself in Moralis db and listen for reveal events or call smart contract function to know which of those 2 reveal cases are now.