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

4

最近我开始使用MEAN技术栈构建自己的RESTful API。目前为止,一切都很顺利。昨天我遇到了一个小问题,一直在努力解决,但是到现在还没有成功的结果...

我有一个Mongoose Schema,它看起来像这样:

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 请求。请求如下:

使用 REST 客户端的请求

这是我得到的响应结果: 来自 REST 客户端的响应

问题是,如果我不输入地址,希望看到默认值(在模式中为“未指定”)。不幸的是,我无法实现这一点。

请问你能帮我吗?


请从键“default”中删除双引号,然后再次检查。 - Nikhil Talaviya
保持默认而不是“default”。 - Nikhil Talaviya
尝试过了,不起作用。无论如何还是谢谢。 - Bilger Yahov
1个回答

1

问题已解决!

实际上它似乎已经正确工作。当我发出GET请求以按id获取新创建的酒店时,它实际上会返回我想要的结果,并将“address”设置为“未指定”。

事实上,在使用Model.create()函数创建酒店后,返回的回调包含了酒店,但没有将“address”设置为“未指定”。

我也尝试了Postman的请求,结果是相同的-没有设置地址。

但无论如何,我看到它实际上是有效的。虽然我会尝试找出为什么回调中返回的对象不完整....


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接