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

Mongoose Schema.create()未写入全部字段至MongoDB,求助排查

解决Mongoose Schema.create()无法写入全部字段的问题

问题根源

你提供的User Schema存在字段嵌套错误:phone、password、role、status、shippingAddress等字段被错误放在了email字段的定义对象内部,导致这些字段并非Schema的顶层属性。Mongoose只会处理Schema顶层定义的字段,所以即便请求传入了这些字段,也不会被写入数据库,role、status的默认值自然也不会生效。

修复后的User Schema代码

将嵌套错误的字段移至顶层,与email同级:

const mongoose = require('mongoose');
const adressSchema = require('./entities/adress.entities');
const cardSchema = require('./entities/card.entities');

const UserSchema =  mongoose.Schema({
    id: {type: String},
    username: {type: String, required: true},
    address: {type: adressSchema, required: true},
    creditCards: [cardSchema],
    // email字段独立定义,仅保留自身配置
    email: {
        type: String,
        required: true,
        lowercase: true,
        validate: {
            validator: function (v) {
                return v.length>1 && /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/.test(v);
            },
            message: props => `${props.value} is not a valid email!`
        }
    },
    // 以下字段移至Schema顶层
    phone : {
        type: mongoose.Schema.Types.String,
        required: true,
        validate: {
            validator: function (v) {
                return v.length > 1 && /^\+?([0-9]{2})\)?[-. ]?([0-9]{4})[-. ]?([0-9]{4})$/.test(v);
            },
            message: props => `${props.value} is not a valid phone number!`
        }
    },
    shippingAddress:[adressSchema],
    role: {
        type: mongoose.Schema.Types.String,
        enum: ['admin', 'user','owner'],
        default: 'user',
        required: true
    },
    password: {type: String, required: true},
    lastLogin: {type: Date},
    status: {
        type: String,
        enum: ['active', 'blocked', 'deleted'],
        default: 'active',
        required: true
    },
    image: String
},{timestamps: true});

修复后效果

  • 请求传入的phone、password等字段会被正常写入MongoDB
  • role(默认值user)、status(默认值active)的默认配置会自动生效
  • address字段需确保请求传入的数据结构与adressSchema匹配,即可正常存储

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:13:10