node.js - 如何将结果列表从 sequelizejs 返回到 grpc?

标签 node.js sequelize.js grpc

如何使用 grpc 返回用户列表,结果为空:

我是http://condorjs.com , 创建 grpc 服务器

class User {
  getUser(ctx) {
    models.users.findAll({
            where: { userId: ctx.req.userId }
        }).then(function(users){
            // return a list of users
           for (var i = 0, len = users.length; i < len; i++) {
             result.push({'userId': users[i].userId, 'userName': users[i].userName);
           }

           return { 'users': result};
        });
     }
   }

const options = {
      'listen': '0.0.0.0:50051',
      'rootProtoPath': 'protos',
   };

   const app = new Condor(options)
    .add('user.proto', 'User', new User())
    .start();

GRPC 客户端调用:
var PROTO_PATH = __dirname + '/../proto/profile.proto';

var grpc = require('grpc');
var user_proto = grpc.load(PROTO_PATH).user;

function main() {
  var client = new guser_proto.User('localhost:50051',
                                       grpc.credentials.createInsecure());

    client.getUser({userId: '8888'}, function(err, response) {
      console.log(response);
    });
}

main();

原型(prototype):
message UserResponse {
    message User{
        string userId = 1;
        string userName = 2;
    }

    repeated User users= 1;
}

最佳答案

你在函数定义中没有收到任何回调方法,所以我添加了一个回调参数,这个回调方法将使用所需的参数调用。您将在 main 方法中收到数据

 getUser(ctx, callback) {
    models.users.findAll({
            where: { userId: ctx.req.userId }
        }).then(function(users){
            // return a list of users
           for (var i = 0, len = users.length; i < len; i++) {
             result.push({'userId': users[i].userId, 'userName': users[i].userName);
           }

           callback(null,{ 'users': result});
        }.bind(this));
     }
   }

这肯定会在这里返回您的数据
function main() {
  var client = new guser_proto.User('localhost:50051',
                                       grpc.credentials.createInsecure());

    client.getUser({userId: '8888'}, function(err, response) {
      console.log(response); // it will print here 
    });
} 

关于node.js - 如何将结果列表从 sequelizejs 返回到 grpc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45557243/

相关文章:

javascript - 使用 Sequelize 通过 object_2_object 表获取相关数据

amazon-web-services - 使用 AWS 负载均衡器之一负载均衡 gRPC 请求

node.js - 从 MySQL 返回的 JSON 中的单引号在返回到 Flutter 调用时更改为特殊字符

node.js - Azure 存储队列 - Cosmos DB 输出 - 错误处理

javascript - 使用 Node.js 检索图像的真实颜色

json - Node.js 在发送 json 对象之前等待 redis client.get

date - 为什么 Sequelize findByPk 将日期列加载为字符串

node.js - Sequelize 关联 : query the last createdAt association from many to many association

go - 通过特定端口发送 GRPC 通信

java - maven-jar-plugin mainClass - 无法找到或加载主类