Estoy intentando implementar TypeORM con MongoDB usando repositorios. Sin embargo, cuando trato de hacer uso de repositorios para administrar la base de datos, usando la misma estructura que en este repositorio , las cosas van un poco mal. Recibo el siguiente error:
UnhandledPromiseRejectionWarning: TypeError: No se puede leer la propiedad 'prototipo' de undefined
He probado el siguiente código:
import { Request, Response } from 'express'; import { getMongoRepository } from "typeorm"; import Task from "../models/Task"; export default class TasksController { async listAll(request: Request, response: Response): Promise<Response> { const tasksRepository = getMongoRepository(Task); try { const tasks = await tasksRepository.find(); return response.status(200).json({ "items": tasks }); } catch (err) { return response.status(400).json({ message: err.message, }); } } } Sé que el error se refiere a la implementación del método .find() . Incluso logré obtener los datos, usando una sugerencia de esta publicación reemplazando:
const tasks = await tasksRepository.find();con
const tasks = await tasksRepository.createCursor(tasksRepository.find()).toArray();pero sigo recibiendo el error mencionado anteriormente.
¿Alguien entiende lo que está pasando?
También logré guardar datos directamente en la base de datos mediante el uso del siguiente script:
servidor.ts
import express from 'express'; import { createConnection } from 'typeorm' const app = express(); const port = 3333; createConnection(); app.use(express.json()); app.post('/tasks', (async (request, response) => { const { item } = request.body; task.item = item; const task = new Task(); (await connection).mongoManager.save(task); return response.send(task); })) app.listen(port, () => console.log(`Server running on port ${port}`) );TypeORM no es compatible con mongodb v4. https://github.com/nestjs/nest/issues/7798
Puede usar 3.7.0 en su lugar.
Envié una solicitud de extracción para resolver esto. https://github.com/typeorm/typeorm/pull/8412 si alguien está buscando una solución mientras tanto.