我已经编写了这段代码,我开始连接到我的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");
});
}
});
答案 0 :(得分:3)
这很好,也很安全。与MongoDB的连接只进行一次。您正在添加匿名函数,并引用此连接到服务器的中间件。
就代码组织而言,有些人可能会建议稍微分解一下。对于上述尺寸的应用,我认为没有问题。如果你计划成长,可能需要进行一些重构。
答案 1 :(得分:2)
请不要害怕使用像猫鼬这样的ODM。它比你想象的更容易,并且会解决你遇到的任何问题。