【问题标题】:Displaying a User's name after account has been deleted? (Mongoose Schema)删除帐户后显示用户名? (猫鼬模式)
【发布时间】:2014-11-29 23:29:48
【问题描述】:
//User Schema
{ name: String } //_id automatically added by Mongoose

//Post Schema
{ content: String,
  comments: [{
    date: Date,
    user: Schema.ObjectId,
    content: String
  }]
}

在我的应用程序中,用户将能够在特定文章上留下 cmets。在我的 cmets 模式中,我将有一个引用用户的 ObjectID,以便我可以在前端填充他或她的用户名。但是,当用户删除他或她的帐户时,他们过去发布的所有 cmets 中的 ObjectID 现在都没有意义,因此我无法检索他或她的用户名以显示在前端。我的解决方案是最初让评论通过 ObjectID 引用用户,然后在预删除 Mongoose 中间件上检查所有具有匹配 ObjectID 的评论对象,并用他们的用户名字符串替换 user 字段,这样即使他们的帐户被删除,我的前端仍然可以显示他们的名字。

如何让 Mongoose Schema 中的字段作为字符串 ObjectID 有效?

这个问题有更好的解决方案吗?

【问题讨论】:

    标签: node.js mongoose user-accounts


    【解决方案1】:

    我可以建议您一种非常简单的方法来解决您遇到的问题。在您的用户文档中添加一个字段名称status。当用户删除他们的帐户时,您不会删除他们的帐户。我建议这样做的原因是,即使在他们删除了他们的帐户之后,您也需要用户的详细信息。除已删除帐户的用户外,所有用户的帐户都将具有active 状态。对于已删除帐户的用户,其状态为inactivearchived。为确保处于非活动状态的用户无法执行某些操作,请在登录时检查用户状态。

    希望这会有所帮助。

    【讨论】:

    • 将归档或非活动用户移动到 MongoDB 中的新数据库或集合是否常见?
    猜你喜欢
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多