diff --git a/nextstep-backend/src/models/comments_model.ts b/nextstep-backend/src/models/comments_model.ts index c5b2d6f..1b0749e 100644 --- a/nextstep-backend/src/models/comments_model.ts +++ b/nextstep-backend/src/models/comments_model.ts @@ -30,12 +30,12 @@ const commentSchema: Schema = new mongoose.Schema({ commentSchema.set('toJSON', { transform: (doc: Document, ret: Record) => { return { - id: ret._id, - postId: ret.postId, - content: ret.content, - owner: ret.owner, - createdAt: ret.createdAt, - updatedAt: ret.updatedAt, + id: ret._id.toString(), + postId: ret.postId.toString(), + content: ret.content as string, + owner: ret.owner.toString(), + createdAt: ret.createdAt ? ret.createdAt.toISOString() : undefined, + updatedAt: ret.updatedAt ? ret.updatedAt.toISOString() : undefined, }; } }); diff --git a/nextstep-backend/src/models/company_model.ts b/nextstep-backend/src/models/company_model.ts index 3abcd2e..b709b4c 100644 --- a/nextstep-backend/src/models/company_model.ts +++ b/nextstep-backend/src/models/company_model.ts @@ -46,10 +46,10 @@ const companySchema: Schema = new mongoose.Schema({ companySchema.set('toJSON', { transform: (doc: Document, ret: Record) => { return { - id: ret._id, - company: ret.company, - company_he: ret.company_he, - tags: ret.tags, + id: ret._id.toString(), + company: ret.company as string, + company_he: ret.company_he as string, + tags: ret.tags as string[], quizzes: ret.quizzes, } } diff --git a/nextstep-backend/src/models/posts_model.ts b/nextstep-backend/src/models/posts_model.ts index ef959be..c8a797a 100644 --- a/nextstep-backend/src/models/posts_model.ts +++ b/nextstep-backend/src/models/posts_model.ts @@ -25,13 +25,12 @@ const postSchema: Schema = new mongoose.Schema({ postSchema.set('toJSON', { transform: (doc: Document, ret: Record): PostData => { return { - id: ret._id, + id: ret._id.toString(), title: ret.title, content: ret.content, owner: ret.owner._id.toString(), - createdAt: ret.createdAt, - updatedAt: ret.updatedAt - + createdAt: ret.createdAt ? ret.createdAt.toISOString() : undefined, + updatedAt: ret.updatedAt ? ret.updatedAt.toISOString() : undefined }; } }); diff --git a/nextstep-backend/src/models/user_model.ts b/nextstep-backend/src/models/user_model.ts index 62c232e..46dd15a 100644 --- a/nextstep-backend/src/models/user_model.ts +++ b/nextstep-backend/src/models/user_model.ts @@ -29,15 +29,15 @@ const userSchema: Schema = new Schema({ }, { timestamps: true, strict: true, versionKey: false }); userSchema.set('toJSON', { - transform: (doc, ret): UserData => { + transform: (doc: mongoose.Document, ret: Record): UserData => { return { - id: ret._id, - username: ret.username, - email: ret.email, - password: ret.password, - imageFilename: ret?.imageFilename, - createdAt: ret.createdAt, - updatedAt: ret.updatedAt + id: ret._id.toString(), + username: ret.username as string, + email: ret.email as string, + password: ret.password as string, + imageFilename: ret?.imageFilename as string | undefined, + createdAt: ret.createdAt ? ret.createdAt.toISOString() : undefined, + updatedAt: ret.updatedAt ? ret.updatedAt.toISOString() : undefined }; } }); diff --git a/nextstep-frontend/.env.template b/nextstep-frontend/.env.template index 373be25..59afee2 100644 --- a/nextstep-frontend/.env.template +++ b/nextstep-frontend/.env.template @@ -2,6 +2,8 @@ VITE_PORT= VITE_BACKEND_URL= +VITE_DOMAIN_NAME= +VITE_ALLOWED_HOSTS= VITE_REACT_APP_FIREBASE_API_KEY= VITE_REACT_APP_FIREBASE_AUTH_DOMAIN= VITE_REACT_APP_FIREBASE_PROJECT_ID= diff --git a/nextstep-frontend/vite.config.ts b/nextstep-frontend/vite.config.ts index f68a9da..c82bfd8 100644 --- a/nextstep-frontend/vite.config.ts +++ b/nextstep-frontend/vite.config.ts @@ -1,15 +1,24 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' -import dotenv from 'dotenv'; +import dotenv from 'dotenv' +dotenv.config() -dotenv.config(); +const allowedHosts = (process.env.VITE_ALLOWED_HOSTS || '') + .split(';') + .map(host => host.trim()) + .filter(Boolean) // remove empty strings // https://vite.dev/config/ export default defineConfig({ plugins: [react()], server: { - port: parseInt(process.env.VITE_PORT || '5000') + port: parseInt(process.env.VITE_PORT || '5000'), + host: process.env.VITE_DOMAIN_NAME || 'localhost', + allowedHosts: allowedHosts.length > 0 ? allowedHosts : undefined }, - preview: { port: parseInt(process.env.VITE_PORT || '5000') } + preview: { + port: parseInt(process.env.VITE_PORT || '5000'), + host: process.env.VITE_DOMAIN_NAME || 'localhost' + } })