gpt4 book ai didi

node.js - Electron/NodeJS : I can't retriving mysql table data and print them on the index. html 页面

转载 作者:行者123 更新时间:2023-12-03 12:33:54 28 4
gpt4 key购买 nike

我是 Electron 和 NodeJS 开发的新手。在我的桌面应用程序中,我定义了诸如 DAO 类来从我的数据库模式中检索我的数据。每个类都有所有常用的 CRUD 函数(对应于他们需要的所有查询)。即,对于我的功能 getAllProducts()我定义如下

    class ProdottiDAO {
...
getAllProducts(callback)
{
var query = "SELECT * FROM `MY_TABLE`";
this.resultQuery = this.sqlManager.CONNECTION.query(query, null, function(error, results, fields){
if (error) throw error;
return callback(results);
});
  • sqlManager是私有(private)成员,只是创建与数据库的连接
  • resultQuery是私有(private)成员应该存储数据表

  • 在我的 index.js我尝试按如下方式检索我的数据:
    var resultQuery = [];
    var prodotto = new ProdottiDAO();
    prodotto.getAllProducts(function (res){
    if(res.length==0) alert("No products");
    for(var i=0; i<res.length; i++){
    // Stores res in resultQuery var
    resultQuery.push(res[i]);
    }
    });
    document.getElementById('desc-prod').innerText = resultQuery[0][0].descrizione;

    但变量 resultQuery[0][0]始终设置为 undefined index.html 页面,而如果我使用 console.log(resultQuery) 打印,我可以使用 resultQuery[0][0] 正确访问 RowDataPacket 结构.我该怎么做才能从回调函数中提取 res 数据?

    最佳答案

    我看到两个明显的问题:

  • 数据库访问通常是异步的。如果这适用于您的应用程序,那么您可能必须“等待”结果。那么预计 resultQuery实际访问时数组为空
  • 此类 DAO 实现通常运行在主进程上,即应用程序的 node.js 部分。在这里,您在客户端(渲染过程)上创建了 DAO,我想知道 DAO 是否真的能够访问数据库。可能不是,也许它因此而失败并出现错误,这就是你什么都看不到的原因。

  • 我会保留 ProdottiDAO在主进程上并定义一个简单的 ipcChannel 以便客户端和后端可以通信。客户端将通过 ipc.sendSync('find-all-products') 发送消息主进程会监听它,执行查询并返回 event.result = resultQuery 的数据.

    (可以异步解决,但这是让它工作并稍后改进的更简单方法)

    关于node.js - Electron/NodeJS : I can't retriving mysql table data and print them on the index. html 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60413398/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com