【已解决】Nodejs 有關取得資料問題

【已解决】Nodejs 有關取得資料問題

我是NODE JS 新鮮人 因為我要做畢業 所以要開始接觸NODE JS, 大家多多指教 我有一個問題 我現在從SQL的STATUS裡把資料拿出來 但我CONSOLE (RESULTS)的結果 是一個陣列 類似這樣: [{status:2}], 但我要的結果是只要數字 那我該怎麼辦 請大家指教

app.post(’/check’,function(req,res) { var mapid = req.body.mapid; client.query( “select status from map where mapid =?”,[mapid], function selectCb(err,results){ if(err){ // throw err; res.send(‘cccc’); }else{ res.send(results); console.log(results); } } ); });


6 回复

当然可以!根据你的描述,你希望从SQL查询结果中提取出status字段中的数字,而不是整个对象。下面是如何处理这个问题,并且提供了一些示例代码来帮助你理解。

问题分析

你目前得到的结果是一个包含对象的数组,例如:

[{status: 2}]

而你希望直接获取到2这个数字。这可以通过访问数组中的对象的status属性来实现。

示例代码

假设你的SQL查询返回了一个类似这样的结果:

[
    { status: 2 }
]

你可以通过以下方式来提取这个值:

app.post('/check', function(req, res) {
    var mapid = req.body.mapid;

    client.query(
        "SELECT status FROM map WHERE mapid = ?", [mapid],
        function selectCb(err, results) {
            if (err) {
                // 错误处理
                res.send('Error occurred');
            } else {
                // 确保结果数组非空
                if (results.length > 0) {
                    // 提取第一个对象的status属性
                    const status = results[0].status;
                    res.send(status.toString()); // 发送数字作为字符串
                } else {
                    // 如果没有找到匹配的数据
                    res.send('No data found');
                }
            }
        }
    );
});

解释

  1. 数据库查询:我们使用client.query执行SQL查询,参数化查询确保了安全性。
  2. 错误处理:如果查询过程中发生错误(如数据库连接失败等),我们将发送一个错误消息给客户端。
  3. 检查结果:我们检查查询结果是否为空。如果结果数组不为空,说明找到了匹配的记录。
  4. 提取数据:从结果数组的第一个元素中提取status属性的值。
  5. 响应客户端:将提取的status值转换为字符串并发送回客户端。

这样,你就可以直接获取到所需的数字,而不是整个对象。希望这些信息对你有帮助!


res.send(results.status)

res.end(results[0].status);

额,首先你确定server端定义的路由收到这个请求了? 其次建议server和client用json数据交互, 还有你定义的这个checkstatus函数为什么没有callback参数,return能返回结果?…

已解決

根据你的描述,你从数据库查询结果中获取到了一个包含状态值的对象数组(例如:[{status: 2}]),但你希望直接得到状态值本身(例如:2)。你可以通过访问对象数组中的第一个元素,并从中提取 status 字段来实现这一点。

以下是修改后的代码示例:

app.post('/check', function(req, res) {
    var mapid = req.body.mapid;
    client.query(
        "SELECT status FROM map WHERE mapid = ?", [mapid],
        function selectCb(err, results) {
            if (err) {
                //  throw err;
                res.send('cccc');
            } else {
                if (results.length > 0) {
                    var statusValue = results[0].status; // 获取状态值
                    res.send(statusValue.toString()); // 发送状态值
                    console.log(statusValue); // 在控制台输出状态值
                } else {
                    res.send('No status found for the given mapid.');
                }
            }
        }
    );
});

在这个例子中:

  1. 如果查询返回的结果数组长度大于0,则取第一个元素的 status 值。
  2. status 的值发送回客户端。
  3. 在控制台打印 status 的值以便调试。

这样你就能直接获得并使用状态值了。

回到顶部