Node JS:将检索到的数据从DB转换为纯文本

时间:2016-03-24 15:07:44

标签: javascript json node.js

在以下代码中,数据从数据库检索到JSON。我想要做的是将每个数据显示为纯文本:

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/');

当我使用res.write(JSON.stringify(rows));打印数据时,我得到以下信息:

[{"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"}]

但是当我运行上面的代码时,我得到了:

Author: undefined Date: undefined

我理解的是问题,因为已检索到两行数据,我不知道如何让它显示每个作者(Lable)和每个日期(TDate)。

1 个答案:

答案 0 :(得分:1)

您正在将javascript对象转换为JSON字符串,然后尝试访问字符串上的javascript对象属性。那不会奏效。您希望使用javascript对象,但由于存在多行,您必须选择要响应的行或写入所有行或用户调用的任何行。

例如:

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();
});