【发布时间】:2019-12-28 06:43:37
【问题描述】:
我无法访问子子文档我想查询子文档实现后端分页以便我可以将它们呈现在单独的页面中
我已经尝试使用点表示法 something.something.something 甚至使用这个 ["something"]["something"]["something"] 数组,因为我最近发现对象是一种数组
这是模型Schema ||子架构
const modelSchema = new mongoose.Schema({
modelname: {
type: String,
required: true,
minlength: 5,
maxlength: 250
}
});
这是 Bikes 架构 ||父架构
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 }"
}
根据文档查询 makename ducatii 的预期输出是做这样的事情
console.log(bikes[0]["make"]["makename"]["makename"])
或者这个 console.log(bikes[0].make.makename.makename)
【问题讨论】:
-
你能告诉我 console.log(bikes[0]) 的输出是什么
-
我得到了数组中的第一项,因为 console.log(bikes) 的输出是一个数组
-
const makeSchema = new mongoose.Schema({ makename: { type: String, required: true, minlength: 5, maxlength: 250 } }); const bikeSchema = new mongoose.Schema({ make: { makename: makeSchema, required: true } })
-
我是否应该删除所需的部分,因为这样做会产生此错误 Invalid schema configuration:
Trueis not a valid type at pathmake.required -
另外,当使用 Joi 验证时,我还应该将其验证为 makeId:Joi.objectId().required(),
标签: node.js mongodb mongoose mongodb-query mongoose-schema