2016-03-31 7 views
2

これは私のここでの最初の質問です。REST APIを使用して収集関係を処理するベストプラクティスは何ですか?

MongoDBデータベースでサポートされているNode.js Expressバックエンドを使用してAndroidでメッセージングアプリケーションを開発しています。 ユーザメッセージのスキーマは次のようになりますメッセージ::私は現在、2つのコレクションモデル持って

{source: <objectId>, destination: <ObjectId>, text: 'Hello World'}

var messageSchema = mongoose.Schema({ 
    source: {type: Schema.Types.ObjectId, ref: 'User', required: true}, 
    destination: {type: Schema.Types.ObjectId, ref: 'User', required: true}, 
    text: {type: String, required: true} 
}); 

を私の質問は、私のようにAPIを介してメッセージオブジェクトを返すべきかどうかであります

かのように:

{source: {username:'David', password:'abcd'}, destination: {username:'Jeff', password: 'aaaa'}, text: 'Hello World'}

他の言葉:参照するフィールドをサーバー側に取り込むか解決する必要がありますか?

ありがとうございました!

+2

パスワードを渡すことをお勧めします – akaphenom

+0

こんにちは、コメントありがとう@akaphenom!あなたはその面で完全に正しいです。今、私はPOCの段階にありますので、セキュリティの面は私にとって重要ではありません。 一般的には、サーバー上またはクライアント上の参照を解決しているかどうか、ここでベストプラクティスが何であるかを知りたいと思います。 –

+0

@ Roniそれは、REST APIを使用するアプリケーションでソースと宛先のデータが必要な場合は、オブジェクトが移入されたメッセージを返す必要があります。それ以外の場合はidを返します。 –

答えて

0

私の2セント:

ObjectIdデータベースのではなく、アプリケーションのアーチファクトです。これらをユーザーに明らかにすると、必ずしもそうでない場合もあります。それがあなたのものであるかどうか、それともドメインの知識か。

最良の点は、使用状況によって異なります。ユーザーがIDを知りたいユースケースはありますか?私は彼らが少なくともどちらか一方を望んでいると思う。その場合、ソースを取得するためのリソースと宛先を取得するリソースの2つのリソースを実装します。

ユーザーが常に両方を必要とする場合、または両方の時間の両方を必要とする場合は、両方を返すか、またはこれを提供する別のリソースを追加します。

両方を返すと、そのセットをどのようにフィルタリングしますか?何らかの識別子、ページネーション、またはデータベース内のすべてを返すだけですか?

+0

返信いただきありがとうございます! 2つのこと: 1)私のユースケースでは、ユーザにメッセージ(+送信者)が表示されているので、今はソースフィールドの入力に行きます。 2)DBのアーチファクトである 'ObjectId'の主題について、ユーザの識別子を必要とするアプリケーションの場合、' User'スキーマに別のIDフィールドを追加することをお勧めしますか? –

+0

あなたのケースでは、「自然な」IDがない場合、ObjectIdが最良の賭けになるかもしれないと思います。それが正しかった時があり、それが良い時とそうでないときを、本当に固くて速いルールにしていません。 – BanksySan

関連する問題