首页 > 解决方案 > 当从 NodeJs/Express 查询数据到 Mysql 时,努力理解

问题描述

当我从 NodeJS 执行以下查询时读取返回的数据时,我感到很困惑。

 connection.query("SELECT * FROM  users WHERE email=?;", [x1.Email], function (
    err,
    results
  ) {
// before i can just do console.log("email is", results[0].email); and it worked fine

    console.log("email is", JSON.parse(JSON.stringify(results))[0].email); 
}

场景一:

当我在 MySQL 中创建一个简单的表并查询数据并可以轻松地从中提取电子邮件时

results[0].email

场景 2: 当我再次使用我的 SQL 工作台创建同一个表并查询数据以从中提取电子邮件时,结果 [0].email 不起作用,我可以看到数据作为 RowDataPacket{} 返回并强制使用,

JSON.parse(JSON.stringify(results))[0].email

它现在确实有效,但很难理解为什么 RowDataPacket 第二次出现而不是之前出现,以及 JSON 技术是如何在这里工作的。

下面是使用 Mysql 工作台创建的用户表。

mysql> show create table users;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table




                                           |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| users | CREATE TABLE `users` (
  `email` varchar(255) NOT NULL,
  `password` varchar(32) NOT NULL,
  `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,       
  `first_name` varchar(255) NOT NULL,
  `last_name` varchar(255) NOT NULL,
  `userlogin` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

. 非常感谢您的帮助。

标签: javascriptmysqlnode.jsexpressmysql-workbench

解决方案


推荐阅读