問題タブ [protobuf-3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
regex - Protobuf3: 正規表現による文字列検証
Protobuf3を使用して PB メッセージを定義しています。
私のシステムでは、センサーには一意の ID 形式 (a-la SENSOR-1342r43
) があり、正規表現で簡単に検証できます。
正規表現に準拠する文字列のみがそのフィールドに受け入れられるように、正規表現バリデーターを protobuf フィールドに追加する方法はありますか?
polymorphism - プロトコル バッファのポリモーフィズム 3
現在のデザイン
ユーザーにイベントのフィードを返すいくつかの既存の API コードをリファクタリングしています。API は通常の RESTful API であり、現在の実装は単純に DB にクエリを実行してフィードを返します。
コードは長くて面倒なので、API サーバーから呼び出されるマイクロサービスにフィード生成を移動することにしました。
新しいデザイン
デカップリングのために、データは API サーバーとマイクロサービスの間を Protobuf オブジェクトとして行き来する可能性があると考えました。このようにして、どちらかの側でプログラミング言語を変更しても、protobuf の型安全性とスリムなサイズを楽しむことができます。
問題
フィードには複数のタイプ (いいね、画像、音声メッセージなど) が含まれます。将来的には、新しいタイプが追加される可能性があります。それらはすべて、タイムスタンプとタイトルなどのいくつかのプロパティを共有していますが、それ以外は完全に異なる場合があります。
従来の OOP では、解決策は単純ですFeedItem
。すべてのフィード項目が継承される基本クラスとFeed
、一連のクラスを含むFeedItem
クラスです。
Protocol Buffers 3 でポリモーフィズムの概念をどのように表現するか、または少なくともリスト内のさまざまな種類のメッセージを有効にするにはどうすればよいですか?
何をチェックしたか
Oneof
: 「oneof を繰り返すことはできません」。Any
: 広すぎる (Java のList<Object>
.
haskell - protbuf3 を使用して、「Map string (たぶん CustomType)」という型をどのように表現できますか?
クライアントとサービスの間で大きな辞書/マップを共有しようとしています。毎回マップ全体をやり取りすることなく、双方向に値を設定し、ディクショナリ/マップから値を削除できる必要があります。
以下を使用してマップを作成できることを知っています。
ここのいずれかを使用する提案が表示されます: https://github.com/google/protobuf/issues/1606
ただし、そのバグ レポートで提案されている構文は、私には意味がありません。
それをどのようにテストしますか?どのようにNoneを保存しますか?
私は次のようなものを作成しようとします:
しかし、これがエレガントで正しい解決策であるとはまったく確信していません。
また、スキーマを完全に変更して実行することも検討しました。
ただし、未定義のケースが作成されるため、そのソリューションは好きではありません。「foo」という名前のセルが「cells」マップと「deleted_cells」マップの両方にある場合はどうなりますか? さらに、計算からデータを抽象化します。セルを変更し、潜在的にセルを削除することを決定する関数にセルを渡すことができるようにしたいので、セルの削除に関する情報がセル自体の近くに保存されるのは当然のことです。
c# - protobuf3 で繰り返される Int32Value (null 許容の int 配列)
次の protobuf メッセージ プロトコルがあります。
protoc はそれをうまくコンパイルし、C# ではすべての Int32Values は int? です。ただし、null引数が許可されていないという例外で実行時に失敗します。repeated
null メッセージが許可されないことは理解できます。ただしInt32Value
、 WellKnownType であるため、コンパイラは必要に応じて特別な NullValue 型を生成できます。
これは protobuf の制限 (で許可Int32Value
されていないrepeated
) ですか、それとも C# コード生成とサポート ライブラリの制限/バグですか?
独自のメッセージと codegen を作成する以外に、protobuf プロトコルで null 許容の int 配列を実行するオプションは何ですか?