簡體   English   中英

這是通過node.js對MongoDB執行操作的最佳方式嗎?

[英]Is this the optimal way to perform operations to MongoDB through a node.js?

我已經在開始 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的連接僅建立一次。 您正在添加匿名功能,並引用了到服務器中間件的此連接。

就代碼組織而言,可能有人建議將其分解。 對於上述大小的應用程序,我認為沒有問題。 如果您打算增長,則可能需要進行一些重構。

請不要害怕像貓鼬一樣使用ODM。 它比您想像的要容易得多,並且可以解決您遇到的任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM