使用angular $ resource的POST请求

时间:2016-09-20 03:11:57

标签: angularjs node.js angular-resource

在我的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": ""
 }

1 个答案:

答案 0 :(得分:1)

您的资源已配置为在传递的数据中查找id属性(通过'@id'),但您的数据正在传递bearId

此外,您服务器中的数据似乎具有_id属性,而不是idbearId

此外,您要查找的资源方法是save(),而不是post()

我选择这种资源定义...

$resource('http://XXX.XXX.X.XX:3000/api/bears/:id', {id:'@_id'});

然后,您可以使用它来创建一个新的熊通过

Bear.save({_id: 123, name: 'Yogi'})