这是通过node.js执行MongoDB操作的最佳方式吗?

我已经写了这个代码,我开始连接到我的MongoDB服务器,并这样的连接我执行Web服务代码。

这是最佳还是安全的方式? 什么是更好的方式来实现呢?

var express = require("express"); var mongodb = require("mongodb"); var servidor = new express(); var BSON = mongodb.BSONPure; servidor.use(express.static(__dirname+"/publico")); servidor.use(express.bodyParser()); var cliente_mongodb = mongodb.MongoClient; cliente_mongodb.connect("mongodb://localhost/db_escuela", function(err, db_escuela){ if(err){ console.log("Error de conexion"+err); }else{ console.log("Se ha conectado a la base de datos"); var cl_alumnos = db_escuela.collection("cl_alumnos"); servidor.get("/alumnos",function(peticion, respuesta){ cl_alumnos.find().toArray(function(err,respuesta_db){ respuesta.send(respuesta_db); }); }); servidor.get("/alumnos/:id",function(peticion,respuesta){ var id = new BSON.ObjectID(peticion.params.id); cl_alumnos.findOne({'_id':id},function(err,respuesta_db){ respuesta.send(respuesta_db); }); }); servidor.post("/alumnos",function(peticion,respuesta){ var nuevo_alumno={ nombre:peticion.body.nombre, edad:peticion.body.edad, promedio:peticion.body.promedio }; cl_alumnos.insert(nuevo_alumno,function(err,respuesta_db){ console.log("Se ha insertado: "+JSON.stringify(respuesta_db)); respuesta.send(respuesta_db); }); }); servidor.delete("/alumnos/:id",function(peticion,respuesta){ var alumno_eliminar = { _id : new BSON.ObjectID(peticion.params.id) } cl_alumnos.remove(alumno_eliminar,function(err,respuesta_db){ if(err) console.log("No se ha podido eliminar el registro"); else respuesta.send("Registro Eliminado"); }); }); servidor.put("/alumnos/:id",function(peticion,respuesta){ var id_editado={ _id : new BSON.ObjectID(peticion.params.id) }; var alumno_editado={ nombre:peticion.body.nombre, edad:peticion.body.edad, promedio:peticion.body.promedio }; cl_alumnos.update(id_editado, alumno_editado, function(err, respuesta_db){ if(err) { console.log("Error:"+err); } else { console.log("Resultado "+respuesta_db); respuesta.send("Actualizacion Exitosa"); } }); }); servidor.listen(8080,function(){ console.log("El servidor esta escuchando en el puerto 8080"); }); } }); 

这很好,而且安全。 到MongoDB的连接只做一次。 您正在添加匿名函数,并将此连接引用到服务器的中间件。

就代码组织而言,有些人可能会build议将其分解一些。 对于上述尺寸的应用,我看不出什么问题。 如果您计划增长,可能需要进行一些重构。

请不要害怕像Mongoose一样使用ODM。 它比你想象的更容易,将解决你的任何问题。