You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongoose用户模型cart字段数据存储异常问题咨询

问题分析与解决方案

嘿,我一眼就看到问题出在你的Mongoose模型定义上啦!

你现在的cart字段定义是这样的:

cart:[ {qty:{type:Number,required:true}}, {product:{type:String,required:true}} ]

这相当于告诉Mongoose:cart是一个数组,数组里的每一项要么是只包含qty的对象,要么是只包含product的对象——而不是你想要的「每个数组元素同时包含qty和product两个字段」。

当你插入{product:'lamp', qty:4}这个对象时,Mongoose会尝试把它匹配到你定义的数组结构里:它只找到了qty字段符合第一个子对象的定义,所以只保存了qty那部分,product字段因为不在第一个子对象的结构里,直接被忽略了。另外,Mongoose默认会给每个子文档自动添加_id字段,这就是你看到数据库里cart数组元素只有_id和qty的原因。

修正后的模型定义

你需要把cart的结构改成「数组中的每个元素是一个同时包含qty和product的对象」,像这样:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
  name:{ type:String, required: true },
  cart:[ {
    qty:{type:Number,required:true},
    product:{type:String,required:true}
  } ]
});
module.exports= mongoose.model('user',userSchema);

验证插入效果

现在再用你原来的插入代码:

const cart = {product:'lamp', qty:4};
const utente = new User({ name:'mario', cart:cart });
utente.save()

数据库里的cart数组就会正常保存成:

cart: [
  {
    _id: 5f06e8140a3290711bb76820,
    qty: 4,
    product: "lamp"
  }
]

完全符合你的预期啦!

内容的提问来源于stack exchange,提问作者user10663534

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 13:47:54