this is the file where you have to add that patch server side:
The latest [email protected]
seems to have fixed this issue.
You need to install [email protected]
in order for it to use moralis-v1
instead of moralis
.
And then uninstall the older [email protected]
.
If youāre using any imports from Moralis in your code e.g. import Moralis from 'moralis'
then you would just change moralis
to moralis-v1
.
Thanks, this worked. But one extra issue popped up, all GET data request are now returning error 1. When I call any other request everything works fine, but when I try to fetch any data from DB I get an error.
Can you post this code where you try to fetch data.
And this happened only after you updated to [email protected]
?
I am not getting that issue when querying my parse
database with similar code. Can you try with a simpler query e.g. without the equalTo
and try querying a different class like UserListings.
Yes, it only started after I switched from moralis
to moralis-v1
. And it keep happening with all queries, even the simple ones. Whatās strange is that the error is only prompted when I request valid data, but when I request data thatās not in the DB, no errors come up, and I get a valid response {"results":[]}
what do you see as payload and response if you look in browser network tab?
does it work with another table?
that User table has restrictions like ACL CLP?
Yes, the same is for all tables. Iām not sure about the restrictions thou, how would I check them?
if you install parse dashboard then you will get an interface similar to how moralis database dashboard looks like and you can see the tables there and set/edit the permissions
For anyone dealing with this problem in the future.
Solved the MongoDB fetch problem by recreating the tables again via Moralis API.
Hi, long time no see, hope youāre doing amazing,
Iāve been following documentation and forum for the related problems but
I canāt pass that { error: unauthorized }
problem,
I did so far:
- App ID is same both server app and client app, re-checked all details among .env files,
- I can see my app in parse-dashboard that I installed manually at my local machine,
- I have exported and imported all database via Studio3T, (method: mongodump, mongorestore)
- Connection to mongodb cluster is OK
- Connection to redis is OK
- I converted all of my cloud functions to TS, through eslint for TS, all warnings cleared and updated
- I turned my moralis sdk to
[email protected]
at client app and ensured that all files which I imported moralis updated, - Re-checked everything in .env file for database-app and client-app
- removed /build and did
yarn build
again. - started the database-app by
yarn dev
_
Issues:
-
I canāt get result from http requests to cloud functions, for example:
http://localhost:1337/server/functions/getServerTime
like I used to see atappId.moralis.server:2053/server/functions/
-
My production phase app canāt start with that server, everything is
unauthorized
_
Most of the answers to the same issue in the forum was about Application ID value which is correct for both database and clientās APPLICATION_ID
Where else should I check, please?
look in network tab when a request is made to see if that app id is sent there and if it is sent if it has the expected value, alternatively you can patch the parse server to ignore the app id check for cloud functions
Sorry I canāt see anyplace to check appid. (I mentioned some more results below the ss. )
_
Btw, client app connected to the database, after applying the patch; now the error turned into something from parse-server.
error: TypeError: Cannot read properties of undefined (reading 'type') {"code":1,"stack":"Error: TypeError: Cannot read properties of undefined (reading 'type')\n at /home/wagmi/Projects/mymoralisapp/mymoralisapp-migrating/database-setup/node_modules/parse-server/src/Controllers/DatabaseController.js:1310:27\n at processTicksAndRejections (node:internal/process/task_queues:96:5)"}
Here's my package.json which been used at the moment:
{
"name": "demo-parse-server-migration",
"version": "1.1.0",
"main": "dist/index.js",
"private": true,
"dependencies": {
"@codemirror/language": "^0.20.0",
"@moralisweb3/common-core": "^2.14.3",
"@moralisweb3/common-evm-utils": "^2.14.3",
"@moralisweb3/parse-server": "2.14.3",
"cors": "^2.8.5",
"dotenv": "^16.0.1",
"envalid": "7.3.1",
"express": "^4.18.2",
"express-rate-limit": "^6.5.1",
"graphql": "^16.6.0",
"graphql-ws": "^5.10.1",
"moralis": "^2.14.3",
"ngrok": "^4.3.3",
"parse-server": "^5.4.0"
},
"devDependencies": {
"@moralisweb3/eslint-config": "^1.0.2",
"@types/cors": "^2.8.13",
"@types/jest": "^29.2.5",
"@types/node": "^18.11.18",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"@typescript-eslint/parser": "^5.48.2",
"axios": "^1.2.1",
"eslint": "^8.32.0",
"eslint-plugin-etc": "^2.0.2",
"eslint-plugin-import": "^2.27.5",
"jest": "^29.3.1",
"mongodb-runner": "^4.9.0",
"prettier": "^2.8.0",
"ts-jest": "^29.0.4",
"ts-node": "^10.9.1",
"typescript": "^4.9.4"
},
"scripts": {
"dev": "ts-node src/index.ts",
"start": "node build/index.js",
"build": "tsc",
"lint": "eslint --ext .js,.ts .",
"format": "prettier --write 'src/**/*.{js,ts}'",
"dev:db-start": "mongodb-runner start",
"dev:db-stop": "mongodb-runner stop",
"gen:cloud": "ts-node ./scripts/generateCloudCode.ts",
"tsc": "tsc"
}
}
what patch did you apply?
you have to look in the payload of the request that is made to the server, it will not work if you access that url directly in the browser unless you patch the server code to skip the app id check for cloud functions
you mean this?
app.use('/server/functions/:functionName', (req, res, next) => {
req.headers['x-parse-application-id'] = config.APPLICATION_ID;
next();
});
I have that in index.ts and is compiled in /build
.
Iām using an app for detailed REST requests, can you tell me an example of running function with the right headers without getting āunauthorizedā error?
it could be that, try to remove the quotes from the application id so that it is only the string (in case that the quotes are included somehow there)
Sorry I was waiting for your answer,
I researched but couldnāt get right information about how to see payload in network tab, once in a time I could see it but now canāt find it.
Iām updating my information in here to get proper help.
Before
- I have an applicaton which is in production state now, itās has developed in a year so thereāre a lot of pages and components piled up, but fundamentals are basics of moralis 1.11.0.
- My legacy app has react-moralis authentication just right in its githubās readme documentation,
- Uses parse-serverās native cloud functions, they are more than a dozen.
Now
- Iām using the latest package from github link from the moralis docs,
- My legacy app connected to localhost.1337, no problem, app-id identical
- App can reach to database through database-migration app, itās alright
- The patch (sending app id as x-parse-request) is applied as another middleware in index.ts
- But when user tries to sign in MM I get āMoralis auth failed, invalid dataā from MoralisEthAdapter
Could it be a ādomain nameā issue?
I noticed that thereās Logs folder in migration app that saved my errors and infos which is cool, Iām sharing some of them:
{"code":101,"level":"error","message":"Moralis auth failed, invalid data","stack":"Error: Moralis auth failed, invalid data\n at /home/wagmi/Projects/mymoralisapp/mymoralisapp-migrating/database-setup-new/src/auth/MoralisEthAdapter.ts:32:13\n at runMicrotasks (<anonymous>)\n at processTicksAndRejections (node:internal/process/task_queues:96:5)\n at async Promise.all (index 0)","timestamp":"2023-03-13T22:51:51.776Z"}
I can give more details in PM whenever fits. I will finish this before weekend.