У меня есть следующее приложение для сохранения в репозиторий памяти. Я подключил локальный mongodb, но у меня проблемы с сохранением опубликованных данных в mongodb. Когда приложение сохраняет в памяти, оно работает нормально, и я могу использовать curl для отображения массива различных событий, сохраненных там. Теперь я хотел бы сохранить его в моей БД, чтобы затем я мог работать с сохраненными данными, и я не мог найти четкого руководства по этому поводу. Может кто-нибудь посоветовать, как это должно быть сделано?
Схема Mongodb:
import { mongoose } from '././http'
const CompetitionSchema = new Schema({
id: String,
place: String,
time: String,
subscriptions: [],
date: new Date(),
cost: {
currency: String,
amount: Number,
},
})
export const CompetitionModel = mongoose.model(
'CompetitionModel',
CompetitionSchema,
)
export default CompetitionSchema
http:
export const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost:27017/CompetitionEvent')
const db = mongoose.connection
db.on('error', console.error.bind(console, 'An error has occured: '))
db.once('open', function () {
console.log('Connected to Mongodb')
})
const express = require('express')
const app = express()
const bodyParser = require('body-parser')
app.use(bodyParser.json())
app.get('/events', (_req: any, res: any) => {
res.send(eventApplication.getAll())
})
app.post('/event', async (req: any, res: any) => {
await eventApplication.createAnEvent(req.body)
res.json({
success: true,
})
})
app.listen(8000)
в памяти и репозитории mongodb
export interface EventRepositoryInterface {
// will require ansyc call will have return promise of all below - refactor needed
save: (event: CompetitionEvent) => void
getById: (id: string) => CompetitionEvent | undefined
getAll: () => CompetitionEvent[]
}
export class InMemoryEventRepository implements EventRepositoryInterface {
constructor(private events: CompetitionEvent[] = []) {}
public save = (event: CompetitionEvent) =>
(this.events = [...this.events, event])
public getById = (id: string) => this.events.find((e) => e.id === id)
public getAll = () => this.events
}
export class MongoCompetitionEventRepository
implements EventRepositoryInterface {
constructor(private events: CompetitionEvent[] = []) {}
//here event should go to DB and NOT in the array memory
public save = (event: CompetitionEvent) =>
(this.events = [...this.events, event])
public getById = (id: string) => this.events.find((e) => e.id === id)
public getAll = () => this.events
}
Пожалуйста, дайте мне знать, если чего-то не хватает, я отредактирую сообщение