Mongoose模式递归

问题描述 投票:0回答:1

可以在Mongoose中进行递归吗?

例如,我想创建嵌套的注释。

让我们考虑以下示例:

commentSchema = new mongoose.Schema({
    comment  : String,
    author   : String,
    answers  : [commentSchema] // ReferenceError: commentSchema is not defined
})

productSchema = new mongoose.Schema({
    name      : {type: String, required: true},
    price     : Number,
    comments  : [commentSchema] 
})

在SQL中,使用密钥很容易实现。

首先我想到的是在commentSchema中添加父字段,它将指向它正在回答的注释,但在这种情况下,如果注释只是数组中的简单对象,则它们没有生成id,所以这个解决方案在当前的设计中无法完成。

我想到的第二个解决方案是为评论创建一个单独的表,然后他们将有自己的ID,但这是一个很好的方式去mongodb吗?我的意思是它开始看起来非常类似于SQL表设计。

node.js mongoose mongoose-schema
1个回答
2
投票

您可以使用Schema.add()方法。首先,在没有递归属性的情况下定义架构。将新创建的模式分配给commentSchema变量后,可以通过调用add()方法将其设置为属性类型。

const commentSchema = new mongoose.Schema({
  comment: String,
  author: String
});

commentSchema.add({ answers: [commentSchema] });
© www.soinside.com 2019 - 2024. All rights reserved.