Ich bin neu zu Knoten js. Ich schreibe eine Nodejs-Anwendung, um Daten von MongoDB zu holen und auf der Seite in einer Tabelle anzuzeigen. Aber die Daten werden nicht angezeigt.
Anwendungsfall ist:
Der Benutzer navigiert zu localhost:8999/
, um zur Hauptseite mit der Bezeichnung Warteschlange zu gelangen. Hier ist ein Link für eine Seite HealthReport
vorhanden, klicken Sie auf welchen Benutzer würde navigieren zu , wo ich die Daten von Mongo anzeigen müssen. Ich kann die JSON-Daten im Browser anzeigen, aber die Anzeige auf der gewünschten Seite funktioniert nicht. Gibt es eine bestimmte Verzeichnisstruktur, der ich folgen muss? Ich verwende eine js-Datei, um das zu tun, aber es funktioniert nicht. Diese Datei ist healthreport-db.js
unter:Knoten js: nicht in der Lage, Json Daten in der HTML-Tabelle (zeigt leer), aber die URL zeigt die Daten
$(function() {
var startTime = new Date();
startTime.setMonth(startTime.getHours() - 6);
$.ajax({
url : "http://localhost:8999/healthreport/getHealthReport",
dataType: "json",
success : function(data) {
var latest = data.length - 1;
var snapShotTime = moment.utc(data[latest].snapShotTime).toDate();
var nfs = data[latest].nfs;
var hive = data[latest].hive;
console.log("db.js hit");
// Add values to Hive Stats Table
$("#nfs").text("NFS: "+nfs);
$("#hive").text("HIVE: "+hive);
},
error : function() {
console.log("failed to get hiveInfo data");
}
});
});
healthreport.html
-Datei (wo ich brauche die analysierten json Daten anzuzeigen) in "Ansichten" Verzeichnis:
<html>
<head>
<title>HealthReport</title></head>
<body>
Health Report
<table>
<tr>
<th>value</th>
</tr>
<tr>
<td id="nfs"></td>
</tr>
<tr>
<td id="hive"></td>
</tr>
</table>
<script src="healthreport-db.js"></script>
</body>
</html>
queue.html
Datei in "Ansichten" Verzeichnis:
<html>
<head>
<title>Queue</title></head>
<body>
Queue<br>
<a href="healthreport.html">Health Report</a>
</body>
</html>
Ich habe eine Haupt-js-Datei namens main_web.js
:
var mongoose = require('mongoose');
var express = require('express');
var bodyParser = require('body-parser');
var collectorConn = mongoose.createConnection('mongodb://localhost:27017/mongotest3');
exports.collectorConn = collectorConn;
var app = express();
var publicOpts = { maxAge: 86400000 }; // Max age of 1 day for static content
// Routes
var route = require('./route.js');
var healthReport = require('./healthReportRoute.js');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static('public', publicOpts)); //all client source will be in public folder
app.use(express.static('views')); //views folder contains html & ejs files
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile); //render html files as ejs
// Route handlers
app.use('/', route);
app.use('/healthreport', healthReport);
var port = process.env.PORT || 8999;
app.listen(port);
console.log("open your browser to localhost:" + port);
exports.app = app;
Dann habe ich ein route.js
, der als Router fungiert:
var express =require('express');
var router = express.Router();
/* Home page */
router.get('/', function(req, res, next) {
res.render('./queue.html',{title: "Queue"});
});
router.get('/healthreport', function(req, res, next) {
res.render('./healthreport.html',{title: "HealthReport"});
});
module.exports = router;
Und dann habe ich ein healthReportRoute.js
, die die JSON-Daten, die im Internet über die URL localhost:8999/healthreport/getHealthReport
zu holen Lage ist:
var express =require('express'); //add express
var router = express.Router();
var moment = require('moment'); //add moment
//mongoose schema
var appTableProdSchema = require("./appTableProdSchema.js");
router.get('/getHealthReport', function(req, res) {
// Return the most recent document
var records = appTableProdSchema
.find()
.sort({'_id': -1})
.limit(1)
.exec(function(err, data) {
if (err) return res.sendStatus(500);
res.json(data);
});
});
module.exports = router;
Die appTableProdSchema.js
ist:
var conn = require('./main_web').collectorConn;
module.exports = conn.model('AppTableProd', {
snapShotTime : String,
nfs: Array,
hive: Array
});
Ich weiß nicht, wie man die Daten in die healthreport.html Seite bringt. Bitte helfen Sie
Wenn Sie nach oben ziehen http: // localhost: 8999/healthreport/getHealthReport im Browser können Sie die Daten sehen? –
@Jesse: Ja, ich kann. Ich habe die Datei healthreport-db.js (oben) geschrieben, um es zu analysieren, aber irgendwie scheint es nicht zu funktionieren oder ausgelöst zu werden. habe ich es auf einen falschen weg gelegt? oder stimmt etwas nicht mit dem code? – aiman
Wenn Sie die Dev-Tools in Ihrem Browser öffnen und auf der Registerkarte "Netzwerk" nachsehen ... können Sie die Anforderung sehen, dass getHealthReport erstellt wird ... Wenn ja, in welchem Status? Wenn es 200 ist, gab es einen anderen Fehler in der Konsole? –