1

在从事一个项目时,面临存储不同护照策略(本地、facebook、twitter)的用户信息的问题。一开始我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 策略的用户将拥有空电子邮件,这会导致错误。

我想过不要让电子邮件独一无二,但这会带来很多问题(从第一眼看)。我看到的解决方案之一是为每种策略制作不同的模式,但这很难维护。

有没有其他方法可以解决这个问题。最佳实践是什么?

PS我发誓我用谷歌搜索但没有找到任何解决方案

4

1 回答 1

1

It seems like you want to be able to say unique:true and specify allowNulls. This now seems possible, as you can see here: https://stackoverflow.com/a/9693138/1935918

于 2013-11-14T18:08:05.297 回答