在res.send中发送MySql结果

时间:2020-06-09 09:47:52

标签: mysql node.js express

我是node.js的新手,这可能很愚蠢,但实际上并没有找到实现这一目标的正确方法。在这里,我尝试从node.js res.send()方法发送mysql结果,在这里在下面添加代码。

router.post('/get_doc_msgs', (req, res)=>{
 var d_msg = "SELECT * FROM msgs WHERE d_id = ?";
var d_msgs = [req.body.doc_id_msgs];
  db.query(d_msg, d_msgs, (err,rows) => {
    if(err){
      console.log('error ', err);
      }
    else{ 
      res.send(rows)
      }
  });
})

这是我的功能,用于将数据获取到呈现的ejs文件中。

function getmsgs(){
$.ajax({
  type:'POST',
  url: '/get_doc_msgs',
  data: {
    doc_id_msgs : $('#doct_id').val();
  },
  success: function(data){
    $('#msg_q').html(data);
  }
})

}

提前谢谢您的帮助和建议。

2 个答案:

答案 0 :(得分:1)

这是如何工作的完整示例,我添加了服务器和客户端代码。

如果您运行

node app.js

然后转到http://localhost:3000,您应该会看到示例的工作。

我认为的主要问题是您需要在Express中使用主体解析器,以便可以正确解析上传的数据。在这种情况下,我使用了JSON,如果需要,可以使用其他编码。

我对服务器代码所做的唯一更改实际上是添加了正文解析器。

在客户端,我设置了一个内容类型标题,并在上​​传的数据上使用了JSON.stringify()。

这不是一个愚蠢的问题,要使所有这些东西都变得好玩,需要一些练习和努力!

app.js

const mysql = require('mysql');
const express = require('express');
const app = express();
const router = app;
const port = 3000;
const bodyParser = require("body-parser");

// Add the credentials to access your database
var db = mysql.createConnection({
    host     : 'localhost',
    user     : '<user>', /* replace these with real values. */
    password : '<pw>', /* replace these with real values. */
    database : '<db>' /* replace these with real values. */
});

app.use(bodyParser.json());
app.use(express.static("./"));

router.post('/get_doc_msgs', (req, res)=>{
var d_msg = "SELECT * FROM msgs WHERE d_id = ?";
var d_msgs = [req.body.doc_id_msgs];
    db.query(d_msg, d_msgs, (err,rows) => {
        if(err){
            console.log('error ', err);
        } else { 
            res.send(rows)
        }
    });
})

app.listen(port);

index.html

<!DOCTYPE html>
<html>
    <head>
        <script
            src="https://code.jquery.com/jquery-3.5.1.min.js"
            integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
            crossorigin="anonymous"></script>
    </head>
    <body style="padding:20px">
        <label>Doc id:</label><input id="doct_id" value="1"/>
        <h4>Response:</h4>
        <p id="msg_q"></p>
        <script>
            function getmsgs()  {
                $.ajax({
                    type: 'POST',
                    url: '/get_doc_msgs',
                    contentType: "application/json",
                    data: JSON.stringify({
                        doc_id_msgs : $('#doct_id').val()
                    }),
                    dataType: "json",
                    success: function(data) {
                        for(row of data) {
                            $('#msg_q').append("<li>" + Object.values(row).join("\t") + "</li>");
                        }
                    }
                })
            }
            console.log("Doc id:", $('#doct_id').val());
            getmsgs();
        </script>
    </body>
</html>

答案 1 :(得分:0)

`getDocMessg = (req, res, next) => {
  mess_id = req.body.doc_id_msgs
db.execute("SELECT* FROM msgs WHERE d_id = ?", [mess_id]).then((results) => {
res to render the page you want to send the data to
res.render('name of page', {
  message : results[0]
})
})
}`

类似的事情应该可以完成您所需的工作,以使其适应您的网站结构,使用ejs,您可以调用可变消息并将其显示在页面上:)