我正在尝试填充文档的子字段,这些子字段未定义为引用。问题是,每当我尝试获取文档并填充字段时, 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/