php - mysql查询在nodeJS中返回undefined

标签 php mysql node.js

此代码返回错误,因为“results(mysql.query)”返回未定义的值。我已经使用 mysql 命令 shell 创建了一个 7~10 行的数据库表,并且该数据库在工作台和命令 shell 中都能完美运行。是不是我mysql安装错了?还是代码错误?我已经在另一台计算机上测试了完全相同的东西,它从那里运行得很好,但突然就不起作用了。我没有复制文件,只是从内存中写下/输入了相同的内容。

我已经搜索过 stackoverflow,似乎每个人都在谈论异步问题,但在我的案例中并不是真正的问题。(之前也有同样的问题)

使用 npm install mysql, mysql版本是community 5.7

crudserver.js(主文件)

const fs = require("fs"); //filesystem
const ejs = require("ejs");
const mysql = require("mysql");
const express = require("express"); //handles all the middlewares
const bodyParser = require("body-parser"); //handles "POST"

const client = mysql.createConnection({
  user:"****",
  password:"****",
  database:"testdb"
});

let app = express();
app.use(bodyParser.urlencoded({
  extended:false
}));

app.listen(52273, function(){
  console.log("server running at http://127.0.0.1:52273");
});

app.get("/",function (request,response){
  fs.readFile("crudlist.ejs","utf8",function(error,data){
    client.query("SELECT * FROM products", function(error,results){
      response.send(ejs.render(data,{
        data:results,
        mytitle:"title1",
        mytitlesub:"title2"
      }));
    });
  });
});

crudlist.ejs

 <% data.forEach(function (itm,index){ %>
 some codes....
 <% } >

它说“数据”未定义。

无法读取未定义的属性“forEach” 在评估(在编译时评估(F:\mycoding\node_modules\ejs\lib\ejs.js:549:12),:17:12) 在 returnedFn (F:\mycoding\node_modules\ejs\lib\ejs.js:580:17) 在 Object.exports.render (F:\mycoding\node_modules\ejs\lib\ejs.js:384:37) 在 Query._callback (F:\mycoding\crudserver.js:25:25) 在 Query.Sequence.end (F:\mycoding\node_modules\mysql\lib\protocol\sequences\Sequence.js:88:24) 在 F:\mycoding\node_modules\mysql\lib\protocol\Protocol.js:398:18 在 Array.forEach( native ) 在 F:\mycoding\node_modules\mysql\lib\protocol\Protocol.js:397:13 在 _combinedTickCallback(内部/进程/next_tick.js:73:7) 在 process._tickCallback (internal/process/next_tick.js:104:9)

最佳答案

如果 dataundefined,您很可能有一个您决定不处理的错误:

// note the first parameter of callback function - "error"
client.query("SELECT * FROM products", function(error,results){

您应该测试错误是否存在,只有在不存在时才呈现结果。

关于php - mysql查询在nodeJS中返回undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47331093/

相关文章:

javascript - 填充选择菜单 onChange

php - 在我自己的设备上使用 Android 应用程序时 PHP 脚本出错

mysql - 使用 MySQL 进行高效分页

node.js - api 路由无法通过 https 运行

php - https 安全 cookie 是否可以防止 XSS 攻击?

javascript - TinyMCE:如何在上传图片时保留相对 URL 但在使用 "insert link"选项时使用绝对 URL?

php - Joomla 3.7 未安装错误显示错误页面

python - MySQL 更新语句不起作用

node.js - NodeJS 如何将 JS 文件导入 TypeScript

node.js - 如何在 Strapi 中获取和存储另一个端点?