Mongoose模式递归

时间:2018-01-01 14:48:21

标签: node.js mongoose mongoose-schema

是否可以在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 中添加 parent 字段,该字段将指向它正在回答的评论,但在这种情况下,如果评论是只是数组中的一个简单对象,它们没有生成id,所以这个解决方案无法在当前设计中完成。

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

1 个答案:

答案 0 :(得分:2)

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

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

commentSchema.add({ answers: [commentSchema] });