2011-09-03 19 views
12

Me gustaría usar mongodb directamente desde el lado del cliente, usando javascript dentro de mis modelos. Supongo que esto es posible ya que en el sitio web de mongo hay una consola javascript en tiempo real para demostración.Mongodb client side javascript api

¿Existe una forma de utilizar la misma API en una aplicación javascript normal sin tener que escribir el código de pegamento cliente-servidor?

Gracias

Respuesta

7

parece que el sitio utiliza la interfaz AJAX RESTO similar, pero estoy seguro de que no tiene acceso a cualquier instancia MongoDB directa o indirectamente, incluso a través de algún puente.

Piensa dos veces antes de aplicar este patrón: ¿cómo harás cumplir la seguridad? ¿Conoce las limitaciones de AJAX? Si realmente sabe lo que está haciendo, los oficiales documentation puntos a unos recursos útiles:

  • Sleepy Mongoose (Python) es una interfaz completa RESTO destacado de MongoDB que está disponible como un proyecto separado.

  • MongoDB Rest (Node.js) es un alfa interfaz REST a MongoDB, que utiliza el controlador nativo MongoDB Node.

  • Simple REST Interface El proceso mongod incluye una sencilla interfaz REST de solo lectura para mayor comodidad. Para capacidades completas de REST recomendamos utilizar una herramienta externa como Sleepy.Mongoose.

Tener un puente REST y la gestión de la same origin policy se puede acceder fácilmente a MongoDB directamente utilizando llamadas AJAX y JavaScript.

+1

alguna sugerencia acerca de la seguridad? – Bakaburg

+1

Creo que colocaría algo intermedio entre el cliente y el puente RESTO de MongoDB en el lado del servidor examinando las credenciales y autorizando al cliente. De esta forma, el código del cliente (navegador) no sabe nada acerca de las credenciales de MongoDB, pero como envía una cookie de sesión (suponiendo que el usuario haya iniciado sesión), puede identificar al cliente y darle el acceso o no. –

+0

¡Gracias por la respuesta! Estoy de acuerdo contigo. pero entonces ¿crees que es imposible construir una aplicación sin la carga de pasar cada solicitud de base de datos a través de una capa intermedia del servidor? pero couchdb y couchapp pueden usar la comunicación REST (a través de una interfaz jquery realmente limpia). ¿Cómo lidian con la seguridad?No quiero aprender couchdb, porque me resulta excesivamente complejo para lo que necesito (y por el tiempo que tengo) – Bakaburg

1

Necesitaba hacer algo similar a esto yo mismo, una consola dentro de una interfaz de administrador, y como utilizo PHP en el back-end acabo de crear un script para recibir los comandos js y usar el método MongoDB :: execute, la conexión php ya está abierto, así que no tuve que pasar ningún dato de autenticación, solo los comandos.
Sin embargo, debe tener mucho cuidado con algo como esto y asegurarse de que solo los usuarios de confianza puedan acceder a la página (y al script), no la hagan pública, ya que cualquiera puede ejecutar js en el cliente para obtener acceso a su db.

Editar: Aquí está el enlace a la documentación http://ar2.php.net/manual/en/mongodb.execute.php

1

Tome un vistazo a meteorjs, o similar. Modelos escritos una vez, completa la ACL.

Obtiene incluso mejor cuando se agrega en el Redis :)