あるプロジェクトに取り組んでいる間、さまざまなパスポート戦略 (ローカル、フェイスブック、ツイッター) のユーザー情報を保存するという問題に直面しました。最初UserSchema
はこんな感じでした。
User = mongoose.Schema(
{
"email" : { type : String , lowercase: true , trim : true , unique : true } ,
"providerId" : { type : String } ,
"providerName" : { type : String } ,
"hashedPassword" : { type : String } ,
"salt" : { type : String } ,
"strategy" : { type : String } ,
"created" : { type : Date , default : new Date().valueOf() } ,
"lastConnected" : { type : Date , default : new Date().valueOf() } ,
"accessToken" : { type : String } ,
"securityToken" : { type : String , default : "" } ,
"roles" : [ { type : String } ]
}
);
しかし、一意の電子メールは電子メールに問題をもたらします。これは、Twitter 戦略を持つ 2 人のユーザーの電子メールが null になり、エラーが発生するためです。
メールを一意にしないことを考えましたが、これは(一見すると)多くの問題をもたらします。私が見る解決策の 1 つは、戦略ごとに異なるスキーマを作成することですが、これは維持するのが非常に困難です。
この問題を解決する他の方法はありますか。ベストプラクティスは何ですか?
PS私はググったことを誓いますが、解決策は見つかりませんでした