为什么旧的猫鼬模型不能有新添加的字段?



我是一名自学成才的MERN堆栈开发人员,仍在学习。我一直在尝试看看在实际生产中是如何做到这一点的。举个例子,我的MongoDB数据库中有一个用户模型,如下所示:

const UserSchema = new mongoose.Schema({
username:{
type: String,
required: true,
unique: true
},
email:{
type: String,
required: true,
unique: true
},
})

用户创建了帐户并存储了这些帐户,他们已经有大约10个用户了。我已经在nodejs中为此编写了逻辑。在未来,我决定在User模型中添加另一个字段,使我能够在nodejs中为该模型编写额外的逻辑。举个例子,我决定添加密码字段。

const UserSchema = new mongoose.Schema({
username:{
type: String,
required: true,
unique: true
},
email:{
type: String,
required: true,
unique: true
},
password:{
type: String,
required: true
},
})

很明显,之前的10个用户在MongoDB中的自己的模型中不会有新的密码字段。任何在添加字段后创建帐户的新用户都肯定会与新密码字段一起存储。如何将新密码字段添加到前10个用户?如果我的逻辑可能取决于未来所有用户的密码字段,该怎么办?他们如何在生产中处理这些问题?

我不知道你的用户在没有"密码"的情况下是如何登录的,但在生产中,你可以做两件事:

  1. 使用"密码更改请求URL"向旧用户发送链接->这样他们就可以自己设置了。

  2. 生成一个临时密码并通过电子邮件发送给他们。在第一次登录尝试中,他们必须将其更改为自己的。

  3. 你可以向这10个用户发送一封带有信息的电子邮件,他们必须点击按钮"记住密码">

这完全取决于您的网站政策。

但在根据需要设置其他字段的情况下,您应该使用一些迁移或默认字段值。

相关内容

  • 没有找到相关文章

最新更新