通过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); }
};