尝试在ember中更新http-mock时出现500错误

时间:2014-12-27 15:35:20

标签: ember.js express put ember-cli

尝试从ember-cli中生成的http-mock更新记录时,控制台出现500服务器错误。

这是我正在尝试做的事情

model: function(params) {
    return this.store.find('user', params.pin);
},
actions: {
    check_out: function(checkedUser) {
        var model = this.modelFor(this.routeName);

        model.set('checked_in',false);

        model.save().then(function(){
            self.transitionTo('volunteer-check-out-success');
        });
    }
}

但我在控制台中收到此错误

PUT http://localhost:4200/api/users/2 500 (Internal Server Error) 

get请求工作得很好,所以奇怪的是我用put请求得到了500。

有没有人对如何使用http-mock有一个很好的概述?也许甚至在它被称为http-mock之前的早期阶段?我仍然对ember-cli和文档中的工作方式有点困惑,而且我发现的例子有点稀疏。我认为阅读一些关于它如何在理论上起作用的信息将帮助我自己解决它。

更新:

这是服务器实现,我有这个变量,get请求是从

读取的
var USERS = [
{
  "id": 1,
  "checked_in": false,
  "pin": 1234,
  "first_name": "John",
  "last_name": "Doe",
  "email": "email@example.com",
  "phone": 8436376960
},
{
  "id": 2,
  "checked_in": false,
  "pin": 5678,
  "first_name": "Jane",
  "last_name": "Smith",
  "email": "email@example.org",
  "phone": 8436375738
}
];

我的put路由处理程序就像这样

usersRouter.put('/:id', function(req, res) {
var id = req.params.id;
var user = USERS.filter(function(user) {
  return user.id.toString() == id;
})[0];

user.checked_in = req.body.checked_in;
user.pin = req.body.pin;
user.first_name = req.body.first_name;
user.last_name = req.body.last_name;
user.email = req.body.email;
user.phone = req.body.phone;

return res.send(user);
});

1 个答案:

答案 0 :(得分:1)

http://expressjs.com/api.html

我从来没有使用它,但如果它与大多数ajax模拟工具一样,你需要设置路由来处理不同的端点并处理不同的动词(GET / POST)。

在你的情况下,我猜你的原始路由设置处理/projects/动词的GET端点,而当你保存它时,