通过angularjs在mongodb中插入embedded的文件

我正尝试通过AngularJS在MongoDB中插入embedded式文档。 父文件已存在。 这是embedded式文件的架构

offers: [{ date: Date, offer: { id: mongoose.Schema.ObjectId, added: { type: Date, default: Date.now() }, displayName: String, creator: Number, //creator: { // type: mongoose.Schema.Types.ObjectId, // ref: 'User' //}, photo: String, description: String, additional: { name: String, data: String } }, linkedBy: Number }], 

这是我的路由器

 router.post('/',expositionController.create); router.get('/',expositionController.getAll); router.get('/:id',expositionController.get); router.put('/:id',expositionController.update); router.delete('/:id',expositionController.delete); router.post('/:id/offer',expositionController.createOffer); 

在控制器中创build报价方法

 exports.createOffer = function(req,res){ var id = req.params.id; try{ id = new ObjectId(id); Exposition.findById(id,function(err,exposition){ if(err){ res.send(err); } exposition.offer = new Offer(req.body.offer); exposition.save(function(err){ if(err) res.send(err); res.json({message: "Ok"}); }); }); }catch(e){ res.send(404); } }; 

这里是AngularJS控制器插入报价的代码

 $scope.createOffer = function (_id) { var offerResource = new OfferResource(); offerResource.offer = new OfferUpdateService(); offerResource.offer.name = $scope.offer.name; offerResource.offer.photo = $scope.uploadPhoto; offerResource.offer.description = $scope.offer.description; offerResource.$save(function (result) { $scope.offer.name = ''; $location.path("/exposition/") }); }; 

和AngularJS路由

 $stateProvider .state('offer', { url: "/:id/offer/", templateUrl: 'app/exposition/listOffers.tpl.html', controller: 'ExpositionsController' }) 

当我尝试插入优惠时,我收到错误消息

 http://localhost:3000/exposition/offer 404 not found 

我是不是做错了?

谢谢!

错误404它的关于不存在的资源在这种情况下URL的发表post,试试这条路线:

router.post( '/报价/:ID',expositionController.createOffer);

也可以尝试使用get来定义一个路由,只通过GET / browser paste url来查看响应和访问资源:

router.get( '/报价/:ID',expositionController.createOffer);

你只通过GET接收属性,例如,如果你创build了这个路由:

 router.get('/offer/:id',expositionController.createOffer); 

你invoque:粘贴这个url在您的浏览器http:// localhost:3000 /博览会/ offer / 0001

并且可以将该日志logging到预期的:

 exports.createOffer = function(req,res){ console.log(req.params.id) var id = req.params.id; try{ id = new ObjectId(id); Exposition.findById(id,function(err,exposition){ if(err){ res.send(err); } exposition.offer = new Offer(req.body.offer); exposition.save(function(err){ if(err) res.send(err); res.json({message: "Ok"}); }); }); }catch(e){ res.send(404); } 

};