Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

331
Views
FastAPI se niega a dejarme crear un documento mongoengine

Tengo una aplicación FastAPI Python con rutas que operan en una instancia de MongoDB. La conexión funciona bien y puedo consultar documentos para mis extremos GET, pero parece imposible crear un nuevo documento desde FastAPI.

Constantemente obtengo:

No ha definido una conexión predeterminada

Tengo una secuencia de comandos independiente que maneja algunas tareas de migración de datos y usa exactamente la misma clase de base de datos y modelos de documentos que la aplicación FastAPI, y esa secuencia de comandos puede guardar documentos en mongo perfectamente bien. No hay diferencia en cómo se crea una instancia del objeto DB entre la API y el script.

La clase de base de datos:

 from os import getenv from mongoengine import connect from pymongo import MongoClient from pymongo.errors import ServerSelectionTimeoutError class Mongo: @property def target_db(self): return 'some_db' @property def uri(self) -> str: env_uri = getenv('MONGODB', None) if env_uri is None: raise DBError('MONGODB environment variable missing') return env_uri.strip() def connect(self) -> MongoClient: try: return connect(host=self.uri, db=self.target_db, alias=self.target_db) except ServerSelectionTimeoutError as e: raise ServerSelectionTimeoutError(e)

Todos mis modelos de base de datos tienen metaatributos que definen exactamente qué base de datos y colección usar:

 class Thing(Document): meta = {'db_alias': 'some_db', 'collection': 'things'}

Las consultas sobre documentos existentes tienen éxito dentro de una definición de ruta:

 results = Thing.objects.filter(**query) # This returns things that I can iterate over

La creación de documentos falla dentro de una definición de ruta:

 new_thing = Thing(**creation_args) new_thing.save()

Error:

 mongoengine.connection.ConnectionFailure: You have not defined a default connection

¿Y eso que significa? Sé que estoy conectado porque puedo consultar la base de datos.

¿Cómo es posible que pueda consultar con éxito documentos de Mongo pero no guardarlos? Todas las sugerencias que he visto en línea apuntan a no haber definido una base de mongoengine.connect o un alias en la llamada a db , pero claramente estoy en mi objeto Mongo , e incluso si eso fuera cierto, seguramente no sería capaz de recuperar documentos de la colección de db...

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Los modelos de documentos mongoengine tenían meta atributos con formato incorrecto...

 class Accounts(Document): meta = {'db_alias': 'some_db', 'collection': 'things'}

Solución: era necesario cambiar db_alias a ​db .

No encontré esto a través de la documentación, y definitivamente no a través de los mensajes de error extremadamente inútiles. Lo probé por capricho. Ahora todo funciona usando el marco FastAPI.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!