7 months ago
Whenever I call my code to fetch a MongoDB collection, it results in a
MongooseError: Operation
games.find()
buffering timed out after 10000ms
After a bit, this error pops up: MongooseServerSelectionError: getaddrinfo ENOTFOUND mongodb.railway.internal
Any idea why it might be? This is my code to fetch the data:
import axios from "axios";
import mongoose from "mongoose";
import { MONGO_URL } from '$env/static/private'
const gameSchema = new mongoose.Schema({
name: String
});
export async function GET({request}) {
console.log("GET /api/games");
await mongoose.connect(MONGO_URL + "/test2");
const Game = mongoose.model("Game", gameSchema);
console.log("Connected to MongoDB");
try {
const gameList = await Game.find({});
console.log(gameList);
return new Response(JSON.stringify(gameList), {
status: 200,
headers: {
"Content-Type": "application/json",
},
});
} catch (error) {
console.error("Error fetching games:", error);
return new Response("Error fetching data", {
status: 500,
headers: {
"Content-Type": "application/json",
},
});
} finally {
mongoose.connection.close();
}
};
It does print "Connected to MongoDB" but then hangs and outputs the mentioned errors.
Any idea what might be up? Thank you.
0 Replies
7 months ago
the backend runs vite dev?
7 months ago
vite is a web bundler for frontend sites?
7 months ago
gotcha, didn't know it was a sveletkit app
7 months ago
you need to run the built files instead of a development server
7 months ago
let's fix the bigger issue first
7 months ago
^
7 months ago
please do not run a development server
I'm testing it locally with the two commands I sent, which I assumed make it run in a prod environment.
In that case, could you please clarify what you mean by "development server"?
7 months ago
vite dev
dev is short for development
7 months ago
vite preview is the same thing as vite dev
7 months ago
on Railway you do not want to run a development server
Oh, I didn't know that. Sorry, I haven't worked that much with Vite before and this is what I found it the docs regarding the build process.
7 months ago
please update your start command to run the built file
Ok, I'll try to do it, but I'm not exactly sure what the correct approach is
7 months ago
run the build locally and look
I see the output/server and output/client with files in it, but I don't know how that connects to Railway, or more specifically which commands run that
Because as in all docs I found so far, prod env is apparently ran by vite preview.
7 months ago
vite preview is a development server.
you need to update your start script to run the built server.
Alright, I fixed it by adding the node adapter and npm run start to be node build/index.js
I am having issues with the app not responding on Railway, so I'll have to fix the port real quick
Actually, no, that seems fine… the default is set to 3000, and on Railway, it runs at 8080, presumably something provided by the $PORT env variable.
Oh yeah, after providing a $PORT env variable to a random number, it runs correctly on the specific port
7 months ago
wrong target port most likely
This was a fix of the wrong environment, but it should not affect the database problem I had, right?
Or rather on a local node build/index.js the same error, on Railway I get MongoServerError: Authentication failed.
7 months ago
locally you can't use the internal domain
7 months ago
as for the error on Railway, you are using Mongoose wrong
7 months ago
the database name needs to be passed in as an option, not part of the url.
7 months ago
the docs I linked says otherwise
7 months ago
please look at the dbName
option