Ich habe eine kleine Frage über die Anzeige von Benutzernamen aus meiner Mongo/Mungo-Datenbank in einer HTML-Seite. Bis jetzt habe ich diesen Code geschrieben, der alle Benutzer aus der Datenbank in meiner Konsole ausgibt, und es funktioniert gut.Angezeigte Benutzernamen in MongoDB/Mongoose/Lenker
Aber ich möchte in der Lage sein, die Benutzernamen in einer netten kleinen Tabelle auf meiner HTML-Seite auszudrucken. Etwas wie dieses:
<table class="table">
<tr>
<td>
{{I want my users to be displayed here in a list.}}
</td>
</tr>
</table>
Ich benutze Lenker als meine Ansichtsmotor. Jede Hilfe bei der Lösung dieses Problems wird sehr geschätzt werden, da ich seit einem Tag daran festhalte. Wenn Sie mein Benutzerschema oder etwas anderes brauchen, sagen Sie es mir einfach und ich poste es. Dank
index.js
var express = require('express');
var router = express.Router();
var app = express();
// Get Homepage
router.get('/', ensureAuthentication, function (req, res) {
res.render('index');
});
// Get Assignments
router.get('/assignments', ensureAuthentication, function (req, res) {
res.render('assignments');
});
// Get userlist
router.get('/userslist', ensureAuthentication, function (req, res) {
res.render('userslist');
});
function ensureAuthentication(req, res, next) {
if (req.isAuthenticated()) {
return next();
} else {
res.redirect('/users/login');
}
}
module.exports = router;
users.js
var express = require('express');
var router = express.Router();
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var User = require('../models/user');
// Register
router.get('/register', function (req, res) {
res.render('register');
});
// Login
router.get('/login', function (req, res) {
res.render('login');
});
// Register User
router.post('/register', function (req, res) {
var name = req.body.name;
var email = req.body.email;
var username = req.body.username;
var password = req.body.password;
var password2 = req.body.password2;
// Validation
req.checkBody('name', 'Name is required').notEmpty();
req.checkBody('email', 'Email is required').notEmpty();
req.checkBody('email', 'Email is not valid').isEmail();
req.checkBody('username', 'Username is required').notEmpty();
req.checkBody('password', 'Password is required').notEmpty();
req.checkBody('password2', 'Passwords do not match').equals(req.body.password);
var errors = req.validationErrors();
if (errors) {
res.render('register', {
errors: errors
});
} else {
var newUser = new User({
name: name,
email: email,
username: username,
password: password
});
User.createUser(newUser, function (err, user) {
if (err) throw err;
console.log(user);
});
req.flash('success_msg', 'You are now registered. Redirecting to login page.');
res.redirect('/users/login');
}
});
passport.use(new LocalStrategy(
function (username, password, done) {
User.getUserByUsername(username, function (err, user) {
if (err) throw err;
if (!user) {
return done(null, false, { message: 'Unknown User' });
}
User.comparePassword(password, user.password, function (err, isMatch) {
if (err) throw err;
if (isMatch) {
return done(null, user);
} else {
return done(null, false, { message: 'Invalid password' });
}
});
});
}));
passport.serializeUser(function (user, done) {
done(null, user.id);
});
passport.deserializeUser(function (id, done) {
User.getUserById(id, function (err, user) {
done(err, user);
});
});
router.post('/login',
passport.authenticate('local', { successRedirect: '/', failureRedirect: '/users/login', failureFlash: true }),
function (req, res) {
res.redirect('/');
});
router.get('/logout', function (req, res) {
req.logout();
req.flash('success_msg', 'Logged out successfully.');
res.redirect('/users/login');
});
// Get users
User.find(function (err, users, res) {
if (err) return console.error(err);
res.render('users', { userList: users });
//console.log(users);
});
module.exports = router;
Vielen Dank für die Antwort, aber Typeerror Ich erhalte: Kann nicht Eigentum lesen ‚machen‘ von nicht definiert. Ich habe dies schon einmal beim Versuch, Render() zu verwenden, aber ich habe keine Ahnung, wie man es lösen :( –
Können Sie den Code Ihrer Express-Route (die die Ansicht rendern) auf Ihre Frage hinzufügen? – robertklep
Added index.js und users.js gerade. Es sind die zwei Routen, die ich in meiner API im Moment verwende. –