javascript - 从其他集合(不是引用)填充子字段

标签 javascript node.js mongodb mongoose

我正在尝试填充文档的子字段,这些子字段未定义为引用。问题是,每当我尝试获取文档并填充字段时, Mongoose 都会返回 null。

我会尝试将其作为一个通用问题。我在网上没有找到答案。

schemaA:

const schemaA = new Schema({
  before: {
    type: Object,
    default: {}
  },
  after: {
    type: Object,
    default: {}
  }
});

module.exports = SchemaA = mongoose.model("schemaA", schemaA);

schemaB:

const schemaB = new Schema({
  someField: {
    subFieldA: {
      type: String
    },
    subFieldB: {
      type: String
    }
  }
});

module.exports = SchemaB = mongoose.model("schemaB", schemaB);

schemaA 中存在的示例文档是:

_id: ObjectId('5e4ab79d9d3ce8633aedf524')
before: {
  someField: {
    subFieldA: ObjectId('5e4ab74f9d3ce8633aedf2eb'),
    subFieldB: ObjectId('5e4ab74f9d3ce8633aedf2ep')
  },
}
after: {
  someField: {
    subFieldA: ObjectId('5e4ab74f9d4ce8633aedf2eb'),
    subFieldB: ObjectId('5e4ab74f9d3ce8639aedf2ep')
  },
}
date: 2020-02-17T15:56:13.340+00:00

我的查询:

const schemaAs = await SchemaA.find()
  .populate(
    "before.someField.subFieldA, before.someField.subFieldB, after.someField.subFieldA, after.someField.subFieldB"
  )

但是这个查询返回null。我做错了什么?

最佳答案

您正在寻找Dynamic References 。 这使您可以将引用的集合设置为每个单独文档的属性,而不是将其硬编码到一个特定集合。

据我所知,在没有任何引用的情况下不可能填充属性。

关于javascript - 从其他集合(不是引用)填充子字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60266371/

相关文章:

javascript - 如何将数据从 php 传递到 Chart.js

javascript - 在另一个 div 内移动和限制一个 div 的运动

node.js:导出普通函数或箭头函数?

arrays - 如何从 json 中删除空数组。我数组中没有元素,我想删除数组。它的嵌套数组

MongoDB——大量的数据库

javascript - 如何查看服务器发出的用户请求?

javascript - Knockout.js - 鼠标悬停和鼠标移出无法正常工作

javascript - 如何为我的生产环境配置 Redis Store?

javascript - 通过引用或复制导入 ES6 变量

mongodb - MongoDB 中的聚合(不包括数组项)