Ich glaube, ich habe mich selbst durch tausende Tutorials geklickt, aber ich bin immer noch an dieser Stelle fest: Ich möchte alle Daten rendern, die meine Express-App schreibt in mongodb am Anfang, in eingebettetes Javascript. Ich hätte gerne eine einfache Tabelle, die alle Daten von mongodb zeigt. Es sollte auch immer die aktualisierten Daten erhalten, wenn die Route aufgerufen wird.Weitergabe von MongoDB Daten in .ejs-Template mit Node.js Express
Meine erste Idee war, die Daten in einem Array zu speichern. Übergeben Sie es an die .ejs-Datei. Erstellen Sie eine Tabelle, durchlaufen Sie mein Daten-Array und schreiben Sie es ein. Mein Problem ist, dass ich die Daten nach Aufruf der find() - Funktion nicht in ein Array schreiben kann.
Das Modell subscriber.js:
const mongoose = require('mongoose');
var uniqueValidator = require('mongoose-unique-validator');
var subscriberSchema = mongoose.Schema({
nr: Number,
mailIdent: {
type: String,
unique: true
},
from: String,
emails: {
type: String,
default: ''
},
text: String,
uLink: String,
anwalt: Boolean,
create_date:{
type: Date,
default: Date.now
}
});
subscriberSchema.plugin(uniqueValidator);
var Subscriber = module.exports = mongoose.model('Subscriber', subscriberSchema);
Ich bin zu dem Thema wirklich neu und es fühlt sich an wie ich um bin nur verwirren. Bitte helfen
//get Subscriber
/*module.exports.getSubscribers = Subscriber.find(function(err, subs){
if(err) return console.error(err);
console.log(subs);
});
*/
module.exports.subscriber = Subscriber;
module.exports.getSubscriberByID = function(_id, callback){
Subscriber.findById(_id, callback);
};
module.exports.getSubscribers = function(){
var subscribers = Subscriber.find({});
return subscribers;
};
Dann habe ich es mit meinem app.js des index.ejs übergeben möge:
app.get('/', function(req, res){
var subs = Subscriber.getSubscribers().toArray();
console.log(subs);
res.render('index',{subs: subs});
});
Ich weiß, dass mein .ejs noch ein wenig einfacher zu sein scheint. Aber so weit ist es nur funktional sein:
<!DOCTYPE html>
<html>
<head>
<link href="/assets/styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<% include partials/nav.ejs %>
<h1>Welcome to the Database</h1>
<p>You won't find more Information than here!</p>
<p>Table</p>
<table>
<colgroup span="5" class="columns"></colgroup>
<tr>
<th>Nr</th>
<th>Name</th>
<th>Mail</th>
<th>uLink</th>
<th>Anwalt</th>
</tr>
<% for (var i = 0; i<subs.length; i++) { %>
<tr>
<td><%= subs[i].nr</td>
<td><%= subs[i].name</td>
<td><%= subs[i].email</td>
<td><%= subs[i].uLink</td>
<td><%= subs[i].anwalt</td>
</tr>
<% } %>
</table>
</body>
</html>
Es machte mich verrückt und schließlich fand ich heraus. Ich habe das Javascript in der .ejs-Datei nicht geschlossen. Das war definitiv der dümmste Fehler überhaupt –
Kannst du Fehler zeigen – YouneL