首页 > 解决方案 > 嵌套的 JSON 对象未保存到数据库 MongoDB

问题描述

我有三个 mongo 模式,每个模式都相互嵌套。主要的有一个嵌套的 JSON,其中也有一个嵌套的 JSON。但是,当使用主模式保存用户时,其他两个嵌套模式没有使用它们的默认值保存,为什么?这是我的三个模式的示例(只是示例数据结构):

const userContacts = new mongoose.Schema({
user1PhoneNumber: {
    type: Number,
    default: 0
},
user2PhoneNumber: {
    type: Number,
    default: 0
}
})

const contact = new mongoose.Schema({
phoneNumber: {
    type: Number,
    default: 0
},
contacts: {
    type: userContacts
}
})

const finalUserSchema = new mongoose.Schema({
    username: {
        type: String,
        required: true,
        max: 255
},
email: {
    type: String,
    required: true,
    max: 255,
},
password: {
    type: String,
    required: true,
    min: 10,
    max: 1024,
},
contactDetails: {
    type: contact
}
})

module.exports = mongoose.model('User', finalUserSchema);

首次使用 mongoose 模型创建用户时,未设置这些值,因为稍后将使用它们……但它们仍应以其默认值出现在数据库中:

const user = new User({
    username: req.body.username,
    email: req.body.email,
    password: hashedPassword,
});

保存在数据库中的内容:

在此处输入图像描述

具有默认值的嵌套 JSON 对象在哪里contactDetials,当我第一次保存用户时,我不应该提供任何数据,因为它应该只使用具有默认值的数据模型?

标签: javascriptnode.jsjsonmongodbmongoose

解决方案


你可以试试这个: contactDetails: contact 而不是: contactDetails: {type: contact} 联系人相同


推荐阅读