我无法访问要查询子文档的子文档,这些子文档实现了后端分页,以便可以在单独的页面中呈现它们
自从我最近发现对象是数组类型以来,我就尝试使用点表示法something.something.something甚至使用此[“ something”] [“ something”] [“ something”]数组
这是模型架构||子架构
const modelSchema = new mongoose.Schema({
modelname: {
type: String,
required: true,
minlength: 5,
maxlength: 250
}
});
这是自行车架构||父模式
const bikeSchema = new mongoose.Schema({
make: {
type: makeSchema,
required: true
}
})
这是将数据存储在Mongodb中的方式
"_id" : ObjectId("5d5e13e8edcbbf038c1f9b8e"),
"make" : {
"_id" : ObjectId("5d40f0b40268d80ac8c30973"),
"makename" : "{ _id: 5d40f0b40268d80ac8c30973, makename: 'ducatii', __v: 0 }"
}
根据文档的预期输出,以查询makecat名称为ducatii就是这样
console.log(自行车[0] [“ make”] [“ makename”] [“ makename”])
或这个 console.log(自行车[0] .make.makename.makename)
答案 0 :(得分:0)
需要注意的两件事:
makename
字段指向一个JSON字符串,而不是一个对象。您无法从JSON字符串访问嵌套的makename.makename
。您必须先将JSON解码为对象,然后才能访问嵌套属性。答案 1 :(得分:0)
这似乎与您存储子文档的方式有关。
例如:
bikes[0].make.makename
实际上是一个字符串,不是有效的对象。您也将无法使用JSON.parse这个字符串,因为您必须用转义的双引号将每个键/值包装起来。
如果您能够正确存储此子文档,那么应该以期望的方式使用该对象!
答案 2 :(得分:0)
要将文档嵌入到文档中,您必须像下面这样
var childSchema = new Schema({ name: 'string' });
var parentSchema = new Schema({
// Array of subdocuments
children: [childSchema],
// Single nested subdocuments. Caveat: single nested subdocs only work
// in mongoose >= 4.2.0
child: childSchema
});
您的案子
const modelSchema = new mongoose.Schema({
makename: {
type: String,
required: true,
minlength: 5,
maxlength: 250
}
});
const bikeSchema = new mongoose.Schema({
make: {
makename: modelSchema
}
})
然后您可以像
一样访问它console.log(bikes[0]["make"]["makename"]["makename"])