我正在使用mongoose和nodejs创建各种预订系统。有一个酒店列表,其中有许多可用的房间作为一个领域。在为客户创建新预订时,我想检查特定酒店的可用房间数量是否大于0,如果是,请将酒店的可用房间数量减少1来更新。
这是我的代码
- 酒店模型文件
var hotel: new mongoose.Schema{
name: String,
availableRooms: {type: Number, default: 1}}
-Booking Model file
var booking: new mongoose.Schema{
userName: String,
hotelId: {type: Schema.Types.ObjectId, ref: 'hotel'}
}
这是预订房间的功能。
Hotel.findOneAndUpdate(
{ '_id': hotelId, 'availableRooms': { '$gt': 0 } },
{ '$inc': { 'availableRooms': -1 } },
function (err, hotel) {
if (err) throw err;
else if (hotel && hotel.availableRooms > 0) {
booking.create(req.body, function(err, confirmedBooking){
if (err) throw err;
res.json(confirmedBooking);
});
}
}
);
使用Mongoose Promises可以更有效地完成此代码吗?如果是这样,代码会是什么样的?