Mongodb Mongoose模式,具有默认值的嵌套对象

Mongodb Mongoose模式,具有默认值的嵌套对象,mongodb,mongoose,Mongodb,Mongoose,最近,我开始使用meanstack构建自己的restfulapi。到目前为止,一切顺利。昨天我遇到了一个小问题,我一直在努力解决,但直到现在还没有看到成功的结果 我有一个猫鼬模式,如下所示: const hotelSchema = new mongoose.Schema({ name: { type: String, required: true }, stars: { type: Number, min:

最近,我开始使用meanstack构建自己的restfulapi。到目前为止,一切顺利。昨天我遇到了一个小问题,我一直在努力解决,但直到现在还没有看到成功的结果

我有一个猫鼬模式,如下所示:

const hotelSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    stars: {
        type: Number,
        min: 0,
        max: 5,
        "default": 0
    },
    services: [String],
    description: {
        type: String,
        "default": "No description"
    },
    photos: [String],
    currency: {
        type: String,
        "default": "Not specified"
    },
    reviews: [reviewSchema],
    rooms: [roomSchema],
    location: {
        address: {
            type: String,
            "default": "Not specified"
        },
        // Always store coordinates longitude E/W, latitude N/S order
        coordinates: {
            type: [Number],
            index: '2dsphere'
        }
    }
});
这就是我创建模型实例的方式:

 Hotel
        .create({
            name: req.body.name,
            description: req.body.description,
            stars: parseInt(req.body.stars, 10),
            services: _splitArray(req.body.services),
            photos: _splitArray(req.body.photos),
            currency: req.body.currency,
            location: {
                address: req.body.address,
                coordinates:[
                    parseFloat(req.body.lng),
                    parseFloat(req.body.lat)
                ]
            }
一切都很完美,正如预期的那样,只需一个小细节。我正在使用高级Rest客户端发出POST请求。具体情况如下:

这就是我得到的回应:

所以问题是,如果我不输入地址,我希望看到默认值,就像在模式中看到的那样——“未指定”。不幸的是,我无法做到这一点

你能帮我吗?

解决了

实际上,它似乎确实工作正常。当我发出GET请求以按id获取新创建的hotel时,它实际上会按我所希望的方式返回它,“address”设置为“Not specified”

使用Model.create()函数创建hotel后,返回的回调包含hotel,但“address”不是“notspecified”

我也尝试了邮递员的请求,结果是一样的——没有地址集


但不管怎样,我发现它确实有效。我将尝试找出回调中返回的对象不完整的原因…

请删除键“default”中的双引号,然后再次检查。将其保留为默认值而不是“default”尝试后,无效。无论如何谢谢你