1

あるプロジェクトに取り組んでいる間、さまざまなパスポート戦略 (ローカル、フェイスブック、ツイッター) のユーザー情報を保存するという問題に直面しました。最初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私はググったことを誓いますが、解決策は見つかりませんでした

4

1 に答える 1

1

unique:true と言って allowNulls を指定できるようにしたいようです。ここでわかるように、これは可能になったようです: https://stackoverflow.com/a/9693138/1935918

于 2013-11-14T18:08:05.297 に答える