在我的index.ejs中注入我的MongoDB数据(NodeJs,Express,MongoDb)

时间:2016-11-01 20:14:11

标签: node.js mongodb express

我是法国学生,对于拼写错误感到抱歉。

我目前正在创建一个测试项目。我使用NodeJs,Express,MongoDB。

我想在index.ejs页面中注入我的MongoDB数据。不幸的是我做不到。我需要一个示例代码。我知道在我的代码中使用res.render,但我似乎无法正确链接我的数据库和我的客户端。

非常感谢

 var express = require('express');
 var app = express();
 var server = require('http').createServer(app)
 var io = require('socket.io').listen(server);
 var device  = require('express-device');

 var runningPortNumber = process.env.PORT;

 // Drivers de Mongo
 var mongodb = require('mongodb');
 var MongoClient = require('mongodb').MongoClient;
 //var db = require('db/db');


 MongoClient.connect('mongodb://localhost:27017/leportail',      function(err, db) {
 if (err) {
   throw err;
 }
  db.collection('utilisateurs').find().toArray(function(err, result) {
   if (err) {
    throw err;
  }

  console.log(result);
   }); 
 });

  app.configure(function(){
     // Donner accès aux fichiers statiques
    app.use(express.static(__dirname + '/public'));

     //View engine
    app.set('view engine', 'ejs');
    app.set('views', __dirname +'/views');

    app.use(device.capture());
    });



    // Afficher les requete dans la console
    app.use(function(req, res, next){
    console.log({method:req.method, url: req.url, device: req.device});
    next();
    });

 // Chargement groupes
    app.get('/', function(req, res) {
        res.render('index.ejs');
       console.log("Un visiteur demande la page index");
    });



  // Page d'erreur 404
  app.use(function(req, res, next){
     res.setHeader('Content-Type', 'text/plain');
     res.send(404, 'Page introuvable !');
     console.log("Un utilisateur demande une page introuvable");
   });


   io.sockets.on('connection', function (socket) {
           socket.emit('message', 'Vous êtes bien connecté !');
    });


  server.listen(runningPortNumber);

1 个答案:

答案 0 :(得分:0)

var http = require("http")
var path = require("path")
var express = require("express")

c'est un middleware qui permet de logger le requet dans la console 
tu n'es pas obliger de tout réinventer

surtout n'oublie pas de faire un 
npm install morgan body-parser


var logger = require("morgan")
var bodyParser = require("body-parser") // ça permet de parser la requet
var app = express()

J'utiliser mongoose à la place de mongodb
mongoose ofre plusieur avantage que mongodb
dans le sens ou a connection est faite au debut et on peut utiliser le model partout ou l'on veu

Visite le site de mongoose pour la documentation (mongoosejs.com/docs/api.html)

var mongoose = require("mongoose")

Je définit le Schéma qui n'est tout autre que la structure de mes document qui sont dans la base de donnée

var UserSchema = new mongoose.Schema({
    username: { type: String },
    password: { type: String },
    age: { type: Number}
})

puis je définit le model qui va me permettre de faire des requete à la base de donnée
et un point très très important c'est que le nom du model tu dois les mettres en anglais
lorsque tu as par exemple comme `persone` nom dans le model dans la base de donne ça sera stocker comme `people`, `stydy` => `stydies`
`user` => `users` ainsi de suite

var UserModel = mongoose.model("User", UserSchema)

var device = require("express-device")
var app = express()

app.set("port", process.env.PORT || 3000)
app.set("views", path.join(__dirname, "views"))
app.set("view engine", "ejs")

les valeur disponible sont 
combined || common || dev || short || tiny
essay chacune de ces valeur tu va voir la sortie dans la console

app.use(logger("dev")) 
app.use(device.capture())
app.use(bodyParser.urlencoded({ extended : true }))
app.use(express.static(path.join(__dirname, 'public')))

app.get("/", function(request, response) {
    var users = [] // Un tableau qui va contenir les utilisateur à passer à la vue
    UserModel.find({}, function(err, users) {
        if(err) throw err
        else {
            users.push(users) // j'étant le tableau que j'ai declarer précédemment avec les résultats obtenu de la base de donnée
        }
    })

    je passe comme deuxième paramètre un object de valeur qui seront utiliser dans la vue index comme `users`

    response.render("index", {users: users})
    console.log("Un visiteur demande la page index");
})

app.use(function(request, response, next) {
    response.setHeader('Content-Type', 'text/plain')
    response.status(404).send('Page introuvable')
    console.log("Un utilisateur demande une page introuvable")
})


var server = http.createServer(app)

var io = require("socket.io").listen(server)

io.sockets.on('connection', function (socket) {
    socket.emit('message', 'Vous êtes bien connecté !');
});

server.listen(app.get("port"), function() {
    console.log("The server is running on http://localhost:%s", app.get("port"))
})