Build A NFT Whale Watcher - Helping Each Other

Hey. I’m trying to add additional features to this app and would like to make it so the app has the ability to sort if the transaction happened within the last day, week, month, year or over year. In some instances like if the transaction happened in the last 7 days, it may have also happened in the last day. So in theory day +1 and week +1.

How do I implement this in my loop? Can anyone spot the errors in my code? The results just keep getting posted to “overYearTx” instead of being split out into their appropriate categories.

Want it to be able to say like User X had 2 transactions total; 2 (both) this month, 1 was this week. Basically two transactions happened this month, one of which was this week. Hopefully that’s clear.

Would love some help?

Github link: https://github.com/ericlam1114/DataMoralisPlatform/blob/main/stats.js

One issue is with your block numbers e.g. monthBlock and yearBlock seem to return the same values. You can test first with hardcoded block numbers for each period.

You can add some logging in your script. I would start simpler e.g. just work on counting transactions only within a month first, and with a smaller contract so tests are faster.

Awesome. I think I pinpointed the problem. It seems to have to do with how i’m calling the Moralis API.

For some reason the API keeps returning the same block for each unique timestamp.

On swagger i’m able to get the correct block utilizing the time/date but not in vscode.

What’s the issue in how i’m calling the API?

You’re not passing in date into the Moralis API from your options. E.g.

const blockoptionsThirty = {
    chain: 'Eth',
    dateThirty: dateThirty,
};

That should be:

const blockoptionsThirty = {
    chain: 'Eth',
    date: dateThirty,
};

That worked. thanks for the correction!

Hey, i’m having trouble getting the Moonbirds “Longest Avg Hold” “Largest Bag” and “Highest Avg Buy In” to display the correct numbers. Currently they are displaying “NaN”. I’m at 49:19 in the video.

I added some console.logs to hopefully help debug. would love some insight into where the error is.

async function getCol() {
      const res = await axios.get("http://localhost:4000/", {
        params: {slug: collection},
      });


      const data = res.data;
      console.log("data",data);

console.log(“data”,data);
this prints: data Welcome to the server

const dataArray = Object.values(data);
      console.log("dataArray",dataArray);

console.log(“dataArray”,dataArray);
this prints:
0: “W”
1: “e”
2: “l”
3: “c”
4: “o”
5: “m”
6: “e”

etc. prints welcome to the server.

So I guess, it doesn’t look like it’s retrieving the correct information from the correct page. I tried manually plugging in the slug etc. into the axios get request but the request gets caught in a promise. Been trying to figure this out for 3 days.

Anyone have insights into how to fix this?

Based on the final repo, it should be http://localhost:4000/collection.

So when I change it to include /collection I get

TypeError: Cannot read properties of undefined (reading ‘owners’)

and

Uncaught (in promise)
AxiosError
code: “ERR_BAD_RESPONSE”
message: “Request failed with status code 500”
In the headers object it says something like “cannot read properties of undefined” looks like it mentions “owners” as well.


I’m not seeing any use of owners in Collection.js where the getCol function is meant to be, can you post your current code.

If you are making your own changes, then more info is needed.

I updated some variable names for specificity (so I can understand them later), and added additional functionality to the stats.js (but that doesn’t appear to be throwing the error).

Here is a link to the main files in github.

That owners error is happening on that collection?slug=0x235.. page? Make sure that address matches that collections address in index.js.

It’s acting relatively inconsistently. Now i’m just getting the below error

Which page is this on now? You only posted fragments of the project so I can only make assumptions. Try restarting your server if the errors are intermittent.

Sorry about that. I actually just uploaded the full project to github. that’s my fault. I restarted the server multiple times, the errors are persistent.

The issue is in your collectionsFile.js - you need to use the exact address set in the server:

slug: "0x23581767a106ae21c074b2276D25e5C3e136a68b"

to:

slug: "0x23581767a106ae21c074b2276d25e5c3e136a68b"

did that solve the issue for you? I’m still getting the error and I added the comma.

The comma wasn’t the issue - have a close look at the differences between the two addresses. Copy exactly what you use in your Express index.js into your collectionsFile.js.

But yes, all working on my side after correcting this.

wow. humbling experience. didn’t know the slug was case sensitive. thank you for the help! you are an expert!!

Hey in some cases my code is showing brackets instead of a number which is making my code return undefined and is ultimately cause issues in my dashboard. Am I doing something wrong? Is there any other way to address this other than filtering !== undefined, not sure if that will mess up my data?

Need more info - which changes have you made since the previous issue? Which file or code is this error coming from? Is this issue Moralis related?

showing brackets instead of a number

What do you mean by this? If it only happens in some cases, then which cases are these or is it random? You can do some debugging.