【问题标题】:How can I retrieve rows from mysql database and send them as JSON via Express.js?如何从 mysql 数据库中检索行并通过 Express.js 将它们作为 JSON 发送?
【发布时间】:2021-06-01 13:35:53
【问题描述】:

我是 Node.js 的初学者,我想通过 Express.js 以 JSON 的形式同时发送注册变量和声明变量

这是我现在想出的唯一方法,但它甚至不起作用。

app.get('/item_reg', (req, res) => {
    var registered = connection.query("SELECT JSON_OBJECT('name', item_name, 'item_id', item_id, 'location', location_desc, 'color', color, 'description', description, 'image', image_url) AS 'Registered' FROM Items_found WHERE type = 0");
    var claimed = connection.query("SELECT JSON_OBJECT('name', item_name, 'item_id', item_id, 'location', location_desc, 'color', color, 'description', description, 'image', image_url)  AS 'Claimed' FROM Items_found WHERE type = 1");
    //sending a response
    res.json([[registered], [claimed]]);
});

这是我的数据库,但我只想要上面查询中的一些属性,而不是全部。

enter image description here

提前谢谢你。

【问题讨论】:

  • 你说它不起作用是什么意思?在哪里?当您在浏览器上加载 localhost:port/item_reg 时会发生什么?
  • 这就是发生的事情。 TypeError: 将循环结构转换为 JSON --> 从带有构造函数 'Socket' 的对象开始 |属性“_writableState”-> 带有构造函数“WritableState”的对象 |属性“afterWriteTickInfo”-> 带有构造函数“对象”的对象---属性“流”关闭了圆圈
  • 你应该add that information into your question。我建议您在 StackOverflow 中搜索有关此特定问题的信息。我想你会找到something similar

标签: mysql node.js json database express


【解决方案1】:

你在使用 MySQL 吗?我假设你的项目中已经安装了 mysql 模块。 Mysql.query 函数将函数作为参数(回调),所以获取 async/await 或 promise,你可以试试这个:

// mysql module
const mysql = require('mysql');
const connection = mysql.createConnection({
  // environment mysql here
});

// util module for handle callback in mysql query
const util = require('util');

// create variable to get result from querying
let resultQuery = util.promisify(connection.query).bind(connection);

// so in your route use async/await and try catch 
app.get('/item_reg', async (req, res) => {
    try {
    // use resultQuery instead as await
    var registered = await resultQuery("SELECT JSON_OBJECT('name', item_name, 'item_id', item_id, 'location', location_desc, 'color', color, 'description', description, 'image', image_url) AS 'Registered' FROM Items_found WHERE type = 0");
    var claimed = await resultQuery("SELECT JSON_OBJECT('name', item_name, 'item_id', item_id, 'location', location_desc, 'color', color, 'description', description, 'image', image_url)  AS 'Claimed' FROM Items_found WHERE type = 1");
    //sending a response
    // the query string is select JSON_OBJECT, is that return json string as result? if yes, so :
    registered = JSON.parse(registered);
    claimed = JSON.parse(claimed);
    res.json({ registered, claimed });
    } catch (err) {
        res.json({ message: 'error message'});
    }
});

【讨论】:

    【解决方案2】:

    异步流将是罪魁祸首。 你可以试试

    connection.query("SELECT JSON_OBJECT('name'........", function(err,results,fields){
        registered = results;
    });
    connection.query("SELECT JSON_OBJECT('name'........", function(err,results,fields){
        claimed = results;
    });
    

    【讨论】:

      猜你喜欢
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 2019-02-28
      相关资源
      最近更新 更多