【问题标题】:Mongoose Typescript 2 Schema that have a field that use each other schemasMongoose Typescript 2 Schema 有一个使用其他模式的字段
【发布时间】:2021-09-05 09:36:26
【问题描述】:

我正在尝试使用 mongoose 和 typescript 声明 2 个模式,它们都有一个字段,它们的类型是另一个模式,如下所示:

const Schema1: Schema = new Schema({
    fieldA: Number,
    fieldB: Schema2

};

const Schema2: Schema = new Schema({
    fieldA : Number,
    fieldB : Schema1

};

问题是我得到一个错误,因为 Schema1 的 fieldB 上的 Schema2 在被分配之前正在被使用。

我之前已经尝试过声明它:

var Schema2: Schema = new Schema();

但是,当向数据库添加值时,Schema2 只是一个没有字段的空模式。

【问题讨论】:

  • 你想完成什么?它看起来像一个循环关系。

标签: node.js typescript mongodb mongoose schema


【解决方案1】:

我认为您不能像这样创建子文档。根据docs,您可以创建子文档数组和单个子文档。并且他们始终保持着亲子关系。 在您的情况下,如果您想使用子文档,您必须先声明它。因此,在 schema1 中,您已将 schema2 声明为子文档(子文档),但它在下面被引用。结构是

|--mongoose-schema
|--- children subdocument
|---- parent schema

【讨论】:

    【解决方案2】:

    我发现你可以在定义后将字段添加到架构中,如下所示:

    Schema1.add({ fieldB: Schema2 });
    

    【讨论】:

      猜你喜欢
      • 2019-11-06
      • 1970-01-01
      • 2019-05-23
      • 2012-11-13
      • 2018-10-09
      • 2018-11-05
      • 2019-03-27
      • 1970-01-01
      相关资源
      最近更新 更多