把路由在node.js中不起作用

时间:2014-09-09 15:49:22

标签: node.js routes

我的PUT路线有问题,但我不确切知道是什么。

首先我创建了我的架构:

var databaseSchema = mongoose.Schema({
        date: type {
           type: Date,
        {
        _id: String,
    });

var Db = mongoose.model('Db', databaseSchema);

创建post方法后:

app.post('/db', function(req, res) {
        var body = req.body,
            database = new Db(body);
        database.save(function (err) {
            if (err) {
                console.log('err', err);
                res.status(500).json(err);
                return;
            }
            res.status(200).json('ok');
            console.log('Success');

在我的INDEX中,我使用Ajax创建了一个GET,以HTML格式显示数据:

$.ajax({
   type: 'GET',
   url: host + '/db',
   success:function(datas){

datas.forEach (function (data) {
        var HTML = [];

        HTML.push('<tr class="datas">');
        HTML.push('<td data-id="' + data._id + '"/> </td>');
        HTML.push('</tr>');

        $('tbody').append(HTML.join(''));

我在索引中创建了一个日期,并且我尝试将它与ID一起发送到我的数据库,为此我使用PUT方法,如下所示:

                           $.ajax({
                                type: 'PUT',
                                url: host + '/db',
                                data: {
                                    _id: update.attr('data-id'),
                                    date: $('.date').val();
                                },
                                sucess:function (success) {
                                    alert('ok');
                                },
                                error:function(err) {
                                    console.log(err);
                                }
                            });

最后,我在app.put路线上更新了她,就像这样:

app.put('/db', function(req, res) {
    Reserva.findById(req.param('date'), function(err, database){
        database.save(function (req, res) {
            if (err) {
                console.log('err', err);
            }
            res.status(200).json('ok');
            console.log('Update');
        });
    });
});

问题是看跌期权不起作用,我没有发现错误,有人能给我一个亮点吗?

1 个答案:

答案 0 :(得分:0)

许多浏览器(甚至是现代浏览器)都不支持GETPOST之外的任何请求方法。要使这些工作起作用,您必须做一些事情:

快递应用:

  1. 安装method-override包。
  2. 在您的应用中需要它:var methodOverride = require('method-override');
  3. 将其添加到中间件中:app.use(methodOverride('_method'));
  4. 客户端JS: 修改您的AJAX调用以在数据中包含_method字段。

    $.ajax({
      type: 'POST', // Change this to a method everyone understands
      url: host + '/db',
      data: {
          _id: update.attr('data-id'),
          date: $('.date').val(), // <- Remove the semicolon that was here
          _method: 'PUT'
      },
      // ...
    });