Mientras uso Python / Flask y MongoDB, ¿puedo pasar un diccionario (de datos de la base de datos) de un archivo Python a un archivo JavaScript? ¿Sería mejor acceder a la misma base de datos desde el archivo JavaScript?

Supongo que cuando dice “archivo javascript” se refiere al código javascript del lado del cliente que se ejecuta dentro del navegador del usuario final (y no algún tipo de código Node.js que se ejecuta en el servidor junto a su python).

Hay dos formas de hacer que los datos estén disponibles para el código JavaScript del lado del cliente en el entorno que describió:

  1. Puede extraer los datos de su base de datos y representarlos como un diccionario JavaScript estático incrustado en el HTML representado de su página a medida que su servidor genera el HTML que se envía a una solicitud HTTP
  2. Puede exponer un punto final de API en su código de matraz al que se puede acceder a través de una solicitud AJAX realizada desde su javascript del lado del cliente.

Hay compensaciones para cualquiera de estos enfoques:

La primera opción es la más rápida, los datos están disponibles inmediatamente para su código javascript del lado del cliente cuando se carga la página. El navegador del usuario solo necesita realizar una solicitud HTTP para desplegar la página completa junto con todos los datos que desea poner a disposición.

La segunda opción requiere que se realice una segunda solicitud HTTP después de cargar la página. Tal vez esto deba ocurrir justo después de que se cargue la página (en el documento listo) o tal vez desee esperar hasta que el usuario realice una acción antes de realizar la solicitud AJAX. Obviamente, esto lleva más tiempo, pero la ventaja de esta solución es que puede permitir que su javascript del lado del cliente realice muchas consultas contra esta API, tal vez para permitir la paginación, clasificación o filtrado de datos. Además, puede tener varias páginas que requieren extraer estos datos, en ese caso, cada uno puede acceder a esta API singular en lugar de incrustar los datos en cada uno.

Deberá evaluar qué solución es la adecuada para usted, según cómo desee que funcione su aplicación.