【问题标题】:Asynchronous Nodejs communication with GRPC protocol使用 GRPC 协议的异步 Nodejs 通信
【发布时间】:2021-06-15 00:58:43
【问题描述】:

我正在尝试构建一个 nodejs/express 项目,该项目使用 grpc 协议在服务器/客户端之间进行通信,以便进行简单的用户 CRUD 操作并在前端显示数据。 目前,服务器端可以很好地使用 mysql 库和 MariaDB 数据库。

据我在控制台中看到的,服务器端按预期发送数据,但我无法在客户端检索它们。

这里是令人兴奋的代码:

在 server.js 文件中,服务器端:

server.addService(customersProto.CustomerService.service, {
getAll: async(_, callback) => {
    const allUsers = await sql.getAll(db);
    callback(null, { allUsers });
    console.log(allUsers);
},
}

console.log 的输出:

[{"id":"a68b823c-7ca6-44bc-b721-fb4d5312cafc","name":"David","age":33,"adress":"227th Baker Street"},{"id":"a68b823c-7ca6-44bc-b721-fb4d5312cahg","name":"Peter","age":99,"adress":"38th King Street"}

在 index.js 文件中,客户端:

async function getAll() {
return new Promise((resolve, reject) => {
    client.getAll(null, (err, data) => {
        if (!err) {
            console.log("fonction getAll : " + JSON.stringify(data));
            resolve(JSON.stringify(data));
        } else {
            reject(err);
        }
    });
});
}



app.get("/", async(req, res) => {
  const data = await getAll();
  console.log(data);
  res.render("customers", {
    results: JSON.stringify(data),
});
});

console.log 的输出:

fonction getAll : {"customers":[]}
{"customers":[]}

我不明白为什么数组是空的...

您有想法检索我的数据吗?

【问题讨论】:

    标签: node.js express asynchronous grpc


    【解决方案1】:

    没关系,我找到了我的问题。

    因为 Proto Buffer 需要一个“客户”数组,所以我没有意识到我不能在 getAll 函数(服务器端)的回调中为变量命名。

    解决问题:在 server.js 文件中,服务器端:

    server.addService(customersProto.CustomerService.service, {
    getAll: async(_, callback) => {
        const customers = await sql.getAll(db);        
        callback(null, { customers });        
        );       
    },
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-15
      • 2022-11-03
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 2011-01-02
      • 2023-03-08
      相关资源
      最近更新 更多