在我的index.js
文件中,我有以下POST ...
router.route('/bears')
// create a bear (accessed at POST http://localhost:8080/api/bears)
.post(function(req, res) {
var bear = new Bear(); // create a new instance of the Bear model
bear.name = req.body.name; // set the bears name (comes from the request)
// save the bear and check for errors
bear.save(function(err) {
if (err)
res.send(err);
res.json({ message: 'Bear created!' });
});
})
.get(function(req, res) {
Bear.find(function(err, bears) {
if (err)
res.send(err);
res.json(bears);
});
});
我在Postman上使用http://localhost:8080/api/bears
请求测试了网址POST
并且成功了。现在,我想使用angular POST
测试我的$resource
请求。
我尝试了从文档中获得的以下内容......
app.factory('Profile', function ($resource) {
var Bear = $resource('http://XXX.XXX.X.XX:3000/api/bears/:bearId', {bearId:'@id'});
var single_bear = Bear.post({bearId:123}, function(){
single_bear.name = "Yogi";
single_bear.$save();
});
});
我不确定bearId
应该怎么做,我只是随机打一个数字。我试图将熊的名字保存为Yogi
。我假设当我运行应用程序时会发生POST
请求,但我这样做,然后检查我的数据库是否已填满且没有条目。
我做错了什么?
修改
如果您想知道熊条目是什么样的......
{
"_id": "57ded2302a5ebc050ce3852d",
"__v": 0,
"name": ""
}
答案 0 :(得分:1)
您的资源已配置为在传递的数据中查找id
属性(通过'@id'
),但您的数据正在传递bearId
。
此外,您服务器中的数据似乎具有_id
属性,而不是id
或bearId
。
此外,您要查找的资源方法是save()
,而不是post()
。
我选择这种资源定义...
$resource('http://XXX.XXX.X.XX:3000/api/bears/:id', {id:'@_id'});
然后,您可以使用它来创建一个新的熊通过
Bear.save({_id: 123, name: 'Yogi'})