简体   繁体   English

节点JS:将从数据库检索的数据作为JSON转换为纯文本

[英]Node JS: Convert retrieved data from DB as JSON to Plain text

In the following code, data are retrieved from a database into JSON. 在以下代码中,数据从数据库中检索到JSON中。 What I would like to do is to display each single data as a plain text: 我想做的是将每个数据显示为纯文本:

var http = require("http");
var mysql = require('mysql');
var express = require('express');
var app = express();
var bodyParser = require('body-parser');

var urlencodedParser = bodyParser.urlencoded({ extended: false })

    app.use(express.static('public'));

    app.get('/Search.html', function (req, res) {
       res.sendFile( __dirname + "/" + "Search.html" );
    })

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

connection.connect();

app.post('/process_post', urlencodedParser, function (req, res) {

   // Prepare output in JSON format
   response = {
       SearchType:req.body.SearchTypes,
       Term:req.body.term
   };
    //var vas = JSON.stringify(response);
    var search = req.body.SearchTypes;
    var term = req.body.term;

    var queryString;
    if(search == 'Author')
    {
        queryString = 'Select Label,TDate from Tweet where AuthorID IN (select ID from Author where Lable = ?)';
    }
    else if(search == 'Mention')
    {
        queryString = 'select Tweet.Label, Tweet.TDate, Author.Lable from Tweet, Author where Tweet.ID IN (select TweetID from TweetMention where MentionID IN (select ID from Mention where Label = ?)) AND Author.ID = Tweet.AuthorID'
    }
    var query = connection.query(queryString, [term], function(err, rows) {
        console.log(rows);
        var tweet = JSON.stringify(rows);
        res.write("Author: " + tweet.Lable);
        res.write("Date: " + tweet.TDate);
        res.end();
    });
    console.log(query.sql);
})

//}).listen(8081);
http.createServer(app).listen(8081);
console.log('Server running at http://127.0.0.1:8081/');

When I print the data using res.write(JSON.stringify(rows)); 当我使用res.write(JSON.stringify(rows));打印数据时res.write(JSON.stringify(rows)); I got the following: 我得到以下内容:

[{"Label":"lest play hero","TDate":"2016-03-12T00:00:00.000Z","Lable":"esti_jony"},{"Label":"u r the best ! Ill always keep","TDate":"2016-03-08T00:00:00.000Z","Lable":"adam03cooper03"}]

but when I run the code above, I got: 但是当我运行上面的代码时,我得到了:

Author: undefined Date: undefined

What I understood is the problem because two rows of data have been retrieved and I do not know how to let it display each author (Lable) and each date (TDate). 我所理解的是问题所在,因为已检索到两行数据,而且我不知道如何让它显示每个作者(标签)和每个日期(TDate)。

You're converting a javascript object to a JSON string and then trying to access the javascript object's properties on the string. 您正在将javascript对象转换为JSON字符串,然后尝试访问该字符串上javascript对象的属性。 That won't work. 那行不通。 You want to use the javascript object instead, but since there is more than one row, you will have to either choose which one you want to respond with or write all rows or whatever your use case calls for. 您想改用javascript对象,但是由于有不止一行,因此您将不得不选择要响应的那一行,或者编写所有行或用例需要的任何内容。

For example: 例如:

var query = connection.query(queryString, [term], function(err, rows) {
    if (err) throw err;
    for (var i = 0; i < rows.length; ++i) {
      var tweet = rows[i];
      res.write("\nAuthor: " + tweet.Lable);
      res.write("\nDate: " + tweet.TDate);
      if (i + 1 < rows.length)
        res.write('\n');
    }
    res.end();
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM