POST 请求使用 angular $resource

POST request using 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 上用 POST 请求测试 url http://localhost:8080/api/bears 并且成功。现在我想使用 angular $resource.

测试我的 POST 请求

我尝试了从文档中获得的以下内容...

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": ""
 }

您的资源配置为在传递的数据中查找 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'})