//User Schema
{ name: String } //_id automatically added by Mongoose
//Post Schema
{ content: String,
comments: [{
date: Date,
user: Schema.ObjectId,
content: String
}]
}
在我的应用程序中,用户可以对特定文章发表评论。在我的评论模式中,我将有一个引用用户的ObjectID,以便我可以在前端填充他或她的用户名。但是,当用户删除他或她的帐户时,他们过去发布的所有评论中的ObjectID现在都没有意义,因此我无法检索他或她的用户名以显示在前端。我的解决方案是最初通过ObjectID对用户进行注释引用,然后在预删除的Mongoose中间件上查看具有匹配ObjectID的所有注释对象,并将user
字段替换为其用户名字符串,这样,即使他们的帐户被删除,我的前端仍然可以显示他们的名字。
如何在Mongoose Schema中创建字段作为String 或 ObjectID有效?
这个问题有更好的解决方案吗?
答案 0 :(得分:1)
我建议您使用一种非常简单的方法来解决您遇到的问题。在“用户”文档中添加字段名称status
。当用户删除其帐户时,您不会删除其帐户。我建议这一点的原因是,即使他们删除了他们的帐户,您也需要用户的详细信息。除了已删除帐户的用户外,所有用户的帐户状态均为active
。对于已删除其帐户的用户,其状态为inactive
或archived
。要确保处于非活动状态的用户无法执行某些操作,请在登录时对用户状态进行一些检查。
希望这有帮助。