0

Google Cloud Endpoints と protorpc メッセージ (python) を使用しています。エンドポイントを作成してユーザー情報を編集しました。ユーザーが空の値を送信したときと、値が送信されなかったときを確認するにはどうすればよいですか? クライアントは {languages: ''} を送信して言語を削除 (None に設定) するか、{} を送信して何もしないことができます。UserEditMessage.languages は繰り返しとしてチェックされるため、フィールドが設定されていないか [] として設定されているかに関係なく、メッセージは常に [] を返します。繰り返されないフィールドの場合、{言語: ''} は {} に対して '' を返し、None を返します。

例:

>>> t1 = UserEditMessage()
>>> t1
<UserEditMessage
 languages: []>
>>> t2 = UserEditMessage(languages=[])
>>> t2
<UserEditMessage
 languages: []>


>>> t1 = UserEditMessage()
>>> t1.first_name # None
>>> t2 = UserEditMessage(first_name='')
>>> t2.first_name
''
4

1 に答える 1

0

残念ながら、これは現在のシステムの欠陥です。必要に応じて、繰り返しフィールドを独自のメッセージに入れ、リストの存在のプロキシとしてメッセージの存在をチェックすることで、この問題を回避できます。

于 2015-11-11T21:11:07.577 に答える