最近我开始使用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)
]
}
一切都很完美,正如预期的那样细节。我正在使用Advanced Rest Client发出POST请求。可以在下面看到:
这就是我得到的回应: Response from Rest Client
所以问题是,如果我没有输入地址,我希望看到默认值,因为它可以在架构中看到 - “未指定”。不幸的是,我无法做到这一点。
你能帮帮我吗?
答案 0 :(得分:0)
解决!
实际上它似乎确实可以正常工作。当我通过id获取GET请求以获取新创建的酒店时,它实际上按照我的意愿返回它,其中"地址"设置为"未指定"。
使用Model.create()函数创建酒店后,返回的回调包含酒店,但没有"地址"存在"未指定"。
我也尝试了Postman的请求,结果是一样的 - 没有设置地址。
但无论如何,我发现它确实有效。我将尝试找出为什么回调中的返回对象虽然不完整....