【发布时间】:2018-06-28 20:17:39
【问题描述】:
我正在使用 Node、Express 和 Mongoose 开发 REST API。当我更新基本模型时,一切正常。但是当我在这种情况下尝试更新鉴别器对象sportEvent时,它不起作用。
Event.js - 事件数据模型具有所有集合通用的基本架构,并带有用于该集合的更多详细信息的鉴别器。
// base schema for all the events
// includes basic detail for all the events
const eventSchema = new Schema({
//title for the event
title: {
type: String,
required: true
},
//description for the events
description: {
type: String,
required: true
},
//event type for the event. such as Music, Sports, Expo, Leisure
eventType: {
type: String,
required: true,
}
}, { discriminatorKey: 'eventType' });
//sport event model for extending the basic event model
const sportEvent = Event.discriminator("sports", new Schema({
sportEvent: {
//sport name. for eg: cricket, football, etc
sportName: {
type: String,
required: true
},
//first team name
firstTeam: {
type: String,
required: true
},
//second team name
secondTeam: {
type: String,
required: true
},
}
}));
EventController.js - 具有用于更新集合的 PUT 方法。这是一个代码sn-p。
//for updating the event added a PUT method in /event route
router.put('/events/:eventId', function(req, res, next){
//getting the event id form the url
eventId = req.params.eventId;
//checking the provided event id is a valid mongodb _id object or not
if(objectId.isValid(eventId)){
Event.findOneAndUpdate({_id: eventId}, {$set: req.body}, {new: true, runValidators: true}, function(err, event){
if(err) {
next(err);
}
sendResponse(res, "Event Successfully Updated", event);
});
} else {
//sending a bad request error to the user if the event id is not valid
sendError(res, 400, "Invalid Event ID");
}
});
【问题讨论】:
标签: javascript node.js mongodb express mongoose