Er yall, ich brauche etwas Hilfe mit meinem Knoten und MongoDB-Anwendung.Abrufen bestimmter Daten aus Mongodb-Sammlungen mit Knoten
Also habe ich eine MongoDB-Datenbank und ich holen die Daten mit node.js mit express.js. Ich hole die Daten mit meiner Anwendung und ich kann sie sogar an meinen Browser senden. Aber ich möchte eine Vorlage rendern (siehe unten).
<!DOCTYPE html>
<html>
<head>
<title>{{ title }}</title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1>{{ title }}</h1>
<p>Hello my name is {{ name }}, and my email is {{ email }}</p>
</body>
</html>
Mit diesem Modell
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var usersSchema = new Schema({
name: String,
email: String
});
mongoose.model('emaildata', usersSchema);
Aber wenn ich versuche, und tun dies mit diesem Skript
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var fs = require('fs');
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hjs');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(require('less-middleware')(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/users', users);
// MongoDb Server
mongoose.connect('mongodb://127.0.0.1/emailApp');
// Load all files in models folder. Importing models and schemas
fs.readdirSync(__dirname + '/models').forEach(function(filename) {
if (~filename.indexOf('.js')) require(__dirname + '/models/' + filename)
});
app.get('/data', function(req, res) {
mongoose.model('emaildata').find(function(err, emaildata) {
res.send(emaildata)
// res.render('email', { title: 'Emails', email: emaildata.email, name: emaildata.name });
});
});
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;
Es hat nichts machen. Ich glaube, das Problem ist 1. Ich verwende nicht die richtige Syntax, um die spezifischen Daten im Objekt, wie Name oder E-Mail, zu identifizieren. Ich versuche dies etwa auf halbem Weg durch das app.get ('/ data' .... 2. Ich importiere das Objekt nicht korrekt, also wenn ich versuche, die Daten zum Rendern meiner Vorlage zu verwenden, es ist nichts.
Dank einem Haufen!
ich Mungo nie verwenden, aber ich denke, das Problem kommen aus dem Weg Sie emaildata abrufen. Da Sie nicht findOne verwenden, sollte Ihr Emaildata-Ergebnis ein Array sein, oder? – Simon