2017-09-21 10 views
0

アプリには複数のユーザータイプがあります。それぞれの登録には異なる情報が必要です(例:売り手からのssn、買い手からのアドレス)。だから、彼らは異なるスキーマになるだろうと思う。しかし、彼らは多くのフィールド(例:名前、電子メール、パスワード、秘密の質問、電話など)も共有しています。ユーザーロール(売り手と買い手)が異なる場合、どのようにマングーススキーマを構成しますか?

私は何をしますか?スキーマをCopyPasteから別のものにコピーしますか?

私はどのように私だろうとは異なるスキーマを使用して行うのであればapp.js

var User = require('./models/User'); 
passport.use(new LocalStrategy(User.authenticate())); 

passport.serializeUser(User.serializeUser()); 
passport.deserializeUser(User.deserializeUser()); 

に、このように第二の問題は、私はpassportjsを使用していますし、それはユーザモデルを要求...

これを対応して?

私は疲れた遺産がありますが、私はモンゴースに相続財産があるとは思わない。そして、私は売り手の検証がバイヤーに実行されるのを拒否します。彼らはエラーを起こします.SSNは与えられません。逆もまた同様です。

答えて

0

これを処理する方法はいくつかあります。

Passportの部分では、ユーザーモデルからアカウントモデルを切り離すことをお勧めします。ユーザーにはプロフィールがあり、アカウントにはログインがあります。ユーザーはアカウントも持っています(おそらく参考になります)。

ロール部分では、同様に、各ユーザーにロールがあり、これは埋め込みドキュメントと思われることをお勧めします。その部分は共通のフィールドにすることができます。ユニークなフィールドについては、Mixed型のオブジェクトだけで開始するので、必要なものはすべて組み込むことができます。

+0

ユーザータイプが埋め込みドキュメントとしての役割を持っている場合、ユーザーが売り手かバイヤーかを知るためには、この 'user.role.type == 1'のようなことをしなければならないのですが、今は' user.seller = =真 'である。あなたは例のスキーマを表示することができます –

+0

私が言ったように、あなたが最適化したいものに応じてそれを処理するためのさまざまな方法があります。 – Paul

関連する問題