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

标签 mongodb mongoose

最近我开始使用 MEAN 堆栈构建我自己的 RESTful API。到现在为止还挺好。昨天碰到一个小问题,一直在努力解决,但一直没有看到成功的结果......

我有一个 Mongoose 架构,如下所示:

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)
                ]
            }

一切都完美无缺,正如预期的那样,有一个小细节。我正在使用 Advanced Rest Client 发出 POST 请求。可以在下面看到:

Request with Rest Client

这就是我得到的回应:
Response from Rest Client

所以问题是,如果我不输入地址,我希望看到默认值,因为它可以在架构中看到 - “未指定”。不幸的是,我无法做到这一点。

你能帮我么?

最佳答案

解决了!

实际上,它似乎确实工作正常。当我发出 GET 请求以通过 id 获取新创建的酒店时,它实际上会按照我的意愿返回它,并将“地址”设置为“未指定”。

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

我也尝试过 Postman 的请求,结果是一样的 - 没有设置地址。

但无论如何,我看到它确实有效。我将尝试找出为什么回调中返回的对象不完整的原因....

关于mongodb - Mongoose 模式,具有默认值的嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42948996/

相关文章:

mongoose - 使用 MongooseJS 更新文档中的多个字段

node.js - Mongoose - 按日期范围搜索存储为字符串的日期

node.js - 使用mongoose更新mongodb中的所有数据

python - 如何将 Pymodm 对象转换为 JSON?

mongodb - 如何从 Mac OS 终端连接到远程 mongo 服务器

mongodb - 使用 "sudo service mongod start"和 "mongod"有什么区别?

javascript - 如何在使用 NodeJS 将推文存储到 MongoDB 之前更改推文流中字段的值

mongodb - 失败 : no intent for collection in archive

javascript - 查找Mongo Collection中动态生成数据的次数

javascript - Keystone.js : use one model in multiple sites