как читать из mongodb и выводить в nodejs?

#node.js

#node.js

Вопрос:

Как я могу выводить строки (документы) в формате таблицы html без использования механизма express / view. Я пытался написать res.write( ${documents} ), который не работает. Пожалуйста, проверьте следующий код.

 const http = require('http');
const MongoClient = require('mongodb').MongoClient;

const hostname = '127.0.0.1';
const port = 3000;
const url = 'mongodb://localhost:27017';
const client = new MongoClient(url, { useNewUrlParser: true });
var documents;
client.connect(err => {
  const collection = client.db("mydb").collection("messages");
  collection.find({}).toArray(function(err, docs) {
    console.log("Found the following records");
    console.log(docs); // How can write this docs as html table
    documents = docs; // Is there any workaround for this?
  });
  client.close();
});

const server = http.createServer((req,res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.write(`Server running at http://${hostname}:${port}/. Records:${documents}`); //this document not appearing
  res.end();
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});
  

Комментарии:

1. Вам нужно сгенерировать HTML-разметку из JSON или сопоставить JSON с HTML правильно?

2. Если это так, то попробуйте это let myObj txt = «<граница таблицы =’1′>» для (x в myObj) { txt = «<tr><td>» myObj[x].name «</td></tr>»; } txt = «</table>» document = txt;

3. давайте узнаем, отличается ли область вопроса

Ответ №1:

Одна из проблем вашего кода связана с заголовками

 res.setHeader('Content-Type', 'text/plain');
  

вам нужно установить content-type text/html

Если вы хотите сопоставить JSON с HTML, попробуйте это

 let myObj
txt  = "<table border='1'>"
for (x in myObj) { txt  = "<tr><td>"   myObj[x].name   "</td></tr>"; } 
txt  = "</table>" 
document = txt;
  

Комментарии:

1. Привет, Азин, спасибо за твой быстрый ответ. Я скопировал вставленный ваш код. но на выходе написано «не определено». не могли бы вы, пожалуйста, правильно отформатировать код и подсказать мне, как выводить в res.write()? Спасибо.

2. Привет, Азин, я исправил формат. теперь это наконец сработало. Спасибо.

Ответ №2:

За ваш комментарий по

// Как записать этот документ в виде HTML-таблицы

Вы пробовали console.table() вместо console.log()?

Комментарии:

1. Привет, спасибо за твой ответ. console.table() выводится красиво. я хочу вывести такую таблицу в разметке браузера.