MongoDB数据库中无法查看订单商品quantity字段问题求助
问题根源
你的Mongoose Schema里clothes和shoes数组的子结构定义错误——你把type: Schema.Types.ObjectId和quantity字段平级放置,这会让Mongoose将整个子元素识别为ObjectId类型,而非包含quantity和关联ID的嵌套对象,最终只存储关联的_id,丢弃了quantity字段。
修复方法
调整Schema结构,明确子文档包含quantity和关联ID两个字段:
修正后的Order Schema
const mongoose = require("mongoose"); const Schema = mongoose.Schema; const orderSchema = new Schema({ user: { type: Schema.Types.ObjectId, ref: "User", }, clothes: [ { quantity: { type: Number, required: true }, _id: { type: Schema.Types.ObjectId, ref: "Clothe" } }, ], shoes: [ { quantity: { type: Number, required: true }, _id: { type: Schema.Types.ObjectId, ref: "Shoe" } }, ], confirmOrder: Boolean, }); module.exports = mongoose.model("Order", orderSchema);
如果你不想用_id作为关联字段名,也可以改用itemId,同时对应调整数据插入代码:
备选Schema(使用itemId)
const orderSchema = new Schema({ user: { type: Schema.Types.ObjectId, ref: "User", }, clothes: [ { quantity: { type: Number, required: true }, itemId: { type: Schema.Types.ObjectId, ref: "Clothe" } }, ], shoes: [ { quantity: { type: Number, required: true }, itemId: { type: Schema.Types.ObjectId, ref: "Shoe" } }, ], confirmOrder: Boolean, });
对应的数据插入代码调整
const order = new Order({ user: "5f2a57ed2a86fd47f48b2f0c", clothes: [ { quantity: 2, itemId: "5f2a58df2a86fd47f48b2f0d", }, ], shoes: [ { quantity: 1, itemId: "5f2a58df2a86fd47f48b2f0e", }, ], confirmOrder: false, }); order.save((error) => { if (error) { console.error(error); } else { console.log("Order saved successfully"); } });
验证
修改Schema后重新运行插入代码,MongoDB中就能正常显示每个商品的quantity字段和对应的关联ID了。
内容的提问来源于stack exchange,提问作者Impra
相关产品推荐
相关产品推荐

