我是法国学生,对于拼写错误感到抱歉。
我目前正在创建一个测试项目。我使用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);
答案 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"))
})