首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有Nodejs错误[ERR_HTTP_HEADERS_SENT]的两个SELECT查询显示数据时出错:无法在将头发送到客户端后设置它们

有Nodejs错误[ERR_HTTP_HEADERS_SENT]的两个SELECT查询显示数据时出错:无法在将头发送到客户端后设置它们
EN

Stack Overflow用户
提问于 2022-05-12 18:45:33
回答 1查看 14关注 0票数 1

我正在尝试为类创建一个小型数据库项目。我已经为服务器设置了一个使用express.js的nodejs应用程序。我正在尝试将数据库中的数据显示为列表元素中的文本,到目前为止,它将一次只用于一个SELECT语句,但另一个语句,我不知道为什么。

我得到了以下错误: Error ERR_HTTP_HEADERS_SENT:无法在将头发送到客户端后设置它们

这是图像:只注意library.books表显示的数据,如果我注释该查询,它将只显示来自library.audiobook表的数据。

由以下代码生成的Web应用程序映像

下面是我试图用两个SELECT查询显示来自两个表的数据的代码

代码语言:javascript
复制
app.get('/index.hbs', (req, res) => {
    let query = "SELECT * FROM library.book";
    let query_audiobook = "SELECT * FROM library.audiobook";
    let items = []
    let auds = []
    con.query(query, (err, result) => {
        if (err) throw err;
        items = result
        console.log(items)
        res.render('index', {
            items: items
        })
    })
    con.query(query_audiobook, (err, result) => {
        if (err) throw err;
        auds = result
        console.log(auds)
        res.render('index', {
            auds: auds
        })
    })
});

如果我将其分为两个app.get()并注释掉一个,那么数据将填充到它的正确部分中,但是我希望显示来自两个表的数据。

如果需要的话,这里是我用来显示数据的index.hbs html,但我假设问题来自于我试图调用上面的查询的方式。

代码语言:javascript
复制
<div class="container">
   <h1>Online Library</h1>
   <h2>Librarian Portal</h2>

   <a href="customer.hbs">
      <button type="button" id="submit">Switch to Customer View</button>
   </a>
   <br>
   <br>
   <h3>Add a Book to the Library:</h3>
   <form method="POST" action="/" >
      <label for="ibsn">IBSN:</label>
      <input type="text" name="ibsn" id="task" required>
      <label for="title">Title:</label>
      <input type="text" name="name" id="task" required>
      <label for="status">Status:</label>
      <input type="text" name="status" id="task" required>
      <label for="author">Author:</label>
      <input type="text" name="author" id="task" required>
      <label for="genre">Genre:</label>
      <input type="text" name="genre" id="task" required>
      <button type="submit" id="submit">Add Book</button>
   </form>
   <br>
   <h3>Books in the Library:</h3>
   <div id="tasks_container">
      <ul>
         {{#each items}}
         <li>IBSN: {{ibsn}} | Title: {{name}} | Status: {{status}} | Author: {{author}} | Genre: {{genre}} </li>
         {{/each}}
      </ul>
   </div>
</div>

<div class="audio_view">
   <h3>Add an AudioBook to the Library:</h3>
    {{!-- <form method="POST" action="/">
    <ul>
        {{#each items}}
    </ul>
    </form> --}}
    <form method="POST" action="/audiobook" >
      <label for="id">ID:</label>
      <input type="text" name="id" id="task" required>
      <label for="name">Title:</label>
      <input type="text" name="name" id="task" required>
      <label for="status">Status:</label>
      <input type="text" name="status" id="task" required>
      <label for="length">Length:</label>
      <input type="text" name="length" id="task" required>
      <label for="author">Author:</label>
      <input type="text" name="author" id="task" required>
      <label for="narrator">Narrator:</label>
      <input type="text" name="narrator" id="task" required>
      <label for="genre">Genre:</label>
      <input type="text" name="genre" id="task" required>
      <button type="submit" id="submit">Add Audiobook</button>
   </form>
   <h3>Audiobooks in the Library:</h3>
   <div id="tasks_container">
      <ul>
         {{#each auds}}
         <li>ID: {{id}} | Title: {{name}} | Status: {{status}} | Length: {{length}} | Author: {{author}} | Narrator: {{narrator}} | Genre: {{genre}} </li>
         {{/each}}
      </ul>
   </div>
</div>
EN

回答 1

Stack Overflow用户

发布于 2022-05-12 20:29:56

结果,我只需要在mysql.createConnection({multipleStatements:true})中启用多个查询,然后将两个查询放在一个get调用中,似乎就可以解决这个问题。

代码语言:javascript
复制
app.get('/index.hbs', (req, res) => {
    var queries = "SELECT * FROM library.book;SELECT * FROM library.audiobook";
    let items = []
    let auds = []
    con.query(queries, [2,1], function(err, result, fields){
        if (err) throw err;
        items = result[0]
        auds = result[1]
        console.log(items)
        console.log(auds)
        res.render('index', {
            items: items,
            auds:auds
        })
    })
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72220682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档