Looks like this is a protobuf question rather than a grpc-web question.
Looks like proto.google.protobuf.Struct.fromJavaScript is a proto3 API? You
might need to ask the question to
https://github.com/protocolbuffers/protobuf.

On Sat, Jul 4, 2020 at 3:47 AM <cybe...@gmail.com> wrote:

> Oh, btw, one advantage is that the receiving end knows all the proto
> definitions it might receive.
>
> On Saturday, July 4, 2020 at 12:00:17 PM UTC+2, cyb...@gmail.com wrote:
>>
>> Or can I, instead of going through all the troubles with protobuf/json in
>> javascript, just use a `map`?
>> ```
>> // proto
>> message Request {
>>     map<string, ?type?> variables = 1;
>> }
>> ```
>> But what  would `?typ?` then be if it the values can ben anything
>> (proto.MessageX, string, boolean, etc)?
>>
>>
>> On Friday, July 3, 2020 at 11:40:54 PM UTC+2, cyb...@gmail.com wrote:
>>>
>>> I just found out about `proto.google.protobuf.Struct.fromJavaScript` and
>>> tried it:
>>>
>>> ```
>>> // code
>>> struct = proto.google.protobuf.Struct.fromJavaScript(vars);
>>> req = new Request;
>>> req.variables = struct;
>>> ```
>>>
>>> This works for a simple `obj` (e.g. `{"key": "val"}`), but for an `obj`
>>> with a proto message field (such as above) it resulted in :
>>>
>>> ```
>>> struct_pb.js:875 Uncaught Error: Unexpected struct type.
>>>     at Function.proto.google.protobuf.Value.fromJavaScript
>>> (struct_pb.js:875)
>>>     at Function.proto.google.protobuf.Struct.fromJavaScript
>>> (struct_pb.js:941)
>>>     at Function.proto.google.protobuf.Value.fromJavaScript
>>> (struct_pb.js:871)
>>>     at Function.proto.google.protobuf.Struct.fromJavaScript
>>> (struct_pb.js:941)
>>>     at Function.proto.google.protobuf.Value.fromJavaScript
>>> (struct_pb.js:871)
>>>     at Function.proto.google.protobuf.Struct.fromJavaScript
>>> (struct_pb.js:941)
>>>     at Function.proto.google.protobuf.Value.fromJavaScript
>>> (struct_pb.js:871)
>>>     at Function.proto.google.protobuf.Struct.fromJavaScript
>>> (struct_pb.js:941)
>>> ```
>>>
>>>
>>> On Friday, July 3, 2020 at 11:12:31 PM UTC+2, cyb...@gmail.com wrote:
>>>>
>>>> I've been struggling with passing a JSON with Message values back and
>>>> forth between a browser (grpc-web) and server (python grpc). A Struct seems
>>>> to be the way but even though the struct I'm sending looks perfectly fine,
>>>> it is empty once received by the server.
>>>>
>>>> ```
>>>> // proto
>>>> message Result {
>>>>     google.protobuf.Struct variables = 1;
>>>> }
>>>>
>>>> // obj - Where variables would contain a (1 level deep) JSON with
>>>> different types of values, e.g.:
>>>> {
>>>>     "key1": 1,
>>>>     "key2": true,
>>>>     "key3": proto_msg_a //instance of proto.MessageA
>>>> }
>>>>
>>>> // code (js in browser using grpc-web)
>>>> struct = new proto.google.protobuf.Struct(obj);
>>>> req = new Request;
>>>> req.variables = struct;
>>>>
>>>> ```
>>>>
>>>> Checking `req.variables` before sending shows that it's indeed a
>>>> `Struct` with all the correct fields in it. But once the other end (server)
>>>> receives it `req.variables` is an empty `Struct`. For testing purposes I
>>>> tried an `obj` that is simply `{'key': 'value'}`, but the result was the
>>>> same.
>>>>
>>>>
>>>> I would really like to use proto messages in variables. The reason for
>>>> picking protobuf/grpc was exactly this, being able to use the same type
>>>> throughout our complete platform, but this seems to be blocking this goal.
>>>> Did I miss something? What would you do?
>>>>
>>>> I've also asked this on StackOverflow:
>>>> https://stackoverflow.com/questions/62693938/grpc-passing-json-with-proto-message-field-between-browser-and-server
>>>>
>>> --
> You received this message because you are subscribed to the Google Groups "
> grpc.io" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to grpc-io+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/grpc-io/35b07876-e6d5-4dd3-ae7d-0608fc74949ao%40googlegroups.com
> <https://groups.google.com/d/msgid/grpc-io/35b07876-e6d5-4dd3-ae7d-0608fc74949ao%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to grpc-io+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/CAEteGX178r_074RBpoNOv7UHuHVOKVqysOtQk2GFFBy9x2j%2Baw%40mail.gmail.com.

Reply via email to