2016-08-08 5 views
0

Router Seitewerfen err; Reference: Dokument ist nicht

var express = require('express'); 
    var router = express.Router(); 
    var mysql = require('mysql');   

    /* GET home page */ 
    router.get('/', function(req, res, next) { 
     res.render('mysql', { 
      title: '', 
     }); 
    }); 

    var connection = mysql.createConnection({ 
     host : '', 
     user : '', 
     password : '', 
     database : '' 
    }); 

    connection.connect();   
    connection.query('SELECT hashtag from recipients', function(err, rows, fields) { 
     if (!err) { 
     console.log(rows);   
      document.getElementById('recipients').innerHTML = rows;   
    } 
     else { 
     console.log('Error while performing Query.'); 
    } 

    });   
    connection.end();   
    module.exports = router; 

Ansichten Seite

<html> 
<head> 

</head> 
<body> 
<p id='recipients'></p> 
<p id='error'></p> 

<script> 
</script> 

</body> 
+0

Weil node.js kein Dokument hat, da es nicht in einem Browser mit DOM ausgeführt wird. – epascarello

+0

Ich verstehe. Was wäre die alternative Lösung? – John

+0

eine Lösung wäre, das Ergebnis zusammen mit der Seite zu senden und dann Dom Element zu finden und auf der Clientseite zuzuweisen. –

Antwort

-1

definiert Ihre Forschung Bitte tun, bevor Sie eine Plattform beginnen. Node.js kann Java-Skript sein, aber es gibt einen großen Unterschied zwischen Node.js und herkömmlichem Java-Skript, das im Browser verwendet wird. Node.js ist eine serverseitige Plattform, ähnlich wie PHP oder Python, die Sie zum Schreiben von Webanwendungen oder anderen Anwendungen verwenden. Javascript, das auf einem Browser ausgeführt wird, wird auf der Clientseite für die Manipulation von DOMs und für viele andere Zwecke verwendet. Jetzt gibt es viele Dinge, die du falsch gemacht hast.

var express = require('express'); 
 
var router = express.Router(); 
 
var mysql = require('mysql'); 
 

 

 
/* GET home page */ 
 
router.get('/', function(req, res, next) { 
 
    var connection = mysql.createConnection({ 
 
    host: '', 
 
    user: '', 
 
    password: '', 
 
    database: '' 
 
    }); 
 

 
    connection.connect(); 
 

 
    connection.query('SELECT hashtag from recipients', function(err, rows, fields) { 
 
    if (!err) { 
 
     console.log(rows); 
 
     //send rows to template engine to render HTML. 
 
     res.render('mysql', { 
 
     rows: rows, 
 
     }); 
 
    } else { 
 
     console.log('Error while performing Query.'); 
 
    } 
 
    }); 
 
    connection.end(); 
 
});
<html> 
 

 
<head> 
 
    <title>something here</title> 
 
</head> 
 

 
<body> 
 
    <table> 
 
    <tr>some heading</tr> 
 
    <% for(var i=0; i< rows.length; i++) {%> 
 
     <tr> 
 
     <td> 
 
      <!-- row[i].key access some value from object --> 
 
      
 
      <%= row[i].someKey%> 
 
     </td> 
 
     </tr> 
 
     <% } %> 
 
    </table> 
 
</body> 
 

 
</html>

Jetzt habe ich eine Annahme gemacht, dass Sie EJS als Template-Engine verwenden. Und das ist kein funktionierendes Beispiel, nur ein Ausschnitt davon, wie das funktionieren soll. Kann this Tutorial hilft mit was Sie versuchen zu tun. Sie sollten lesen this

+0

Danke. Aus Neugier, warum sagst du Java-Script anstelle von Javascript? – John

+0

Autokorrektur :) – AJS

+0

oh ich sehe, eine schnelle Frage mit Zeilen gibt es auf den Seitenzeilen von [Objekt Objekt] aber ich weiß theres Wert darin, weil es in der Konsole die richtigen Daten ausgibt. es gibt nur [object Object] ohne Daten aus, wenn versucht wird, auf der Seite anzuzeigen. Wenn ich console.log mache, zeigt es die korrekten Daten an. Es scheint wie die HTML-Seite rendert die Zeile Datenstruktur und nicht die Daten selbst – John

0
// db.js 
var connection = mysql.createConnection({ 
    host : '', 
    user : '', 
    password : '', 
    database : '' 
}); 
connection.connect(); 
module.exports = connection; 

... 
// router.js 
var db = require('db.js') 

router.get('/', function(req, res, next) { 
    db.query('SELECT hashtag from recipients', function(err, rows, fields) { 
     if (err) { 
      return next(err); // or res.send(err.message); 

     res.render('mysql.html', { 
      title: '', 
      recipients : rows 
     }); 
    }); 
}); 

module.exports = router; 

// mysql.html 
<html> 
<head> 
    <title>{{title}}</title> 
</head> 
<body> 
    {{recipients}} 
</body> 
</html> 
Verwandte Themen