我在与猫鼬有关的事物上有些新奇,因此我觉得这种行为很奇怪。 Mongoose返回的文档具有的字段在实际的MongoDb文档中不存在,并且似乎是由Mongoose根据架构添加的。
我使用与此类似的模式(简化了此模式):
const ProfessionalSchema = new mongoose.Schema({
product: {
details: [{
_id: false,
id: String, // UUID
name: String,
prestations: [{
_id: false,
id: String, // UUID
name: String,
price: Number,
}],
}],
},
[...]
使用mongo CLI实用工具在Mongodb中显示的我的文档没有产品字段。
我不明白的是为什么Professional.findById()。exec()的结果返回带有product:{details []}字段的文档。我希望在Mongoose返回的结果中没有该字段,因为它在原始MongoDb文档中不存在。 Mongoose文档发现https://mongoosejs.com/docs/guide.html(“模式和模型”段落)无济于事。
我的业务逻辑将要求该字段不存在,而不是由模式强制。这可以实现吗?
答案 0 :(得分:2)
尝试看看default
选项。您可以例如将产品默认设置为null
,然后在业务逻辑中处理“ product
为null
”的情况,而不是“ product
字段不存在”的情况。 / p>
关于为什么发生这种情况,是因为您正在处理模式。如果该字段在文档上不存在,它将被自动填充。模式的重点是确保文档结构的一致性。