0

これをしばらくデバッグしようとしたので、どこが間違っているのかよくわかりません。私は webapp の最初の部分を作成しています。現在、バックボーンを使用してフォームを保存しようとしています。Node.js、Mongoose、Express、および Backbone を使用しています。

モデルをサーバーに送り返すと、リクエストがハングし、最終的にタイムアウトが発生することを除いて、すべてが正常に機能しているようです。これが私が見ているもののスクリーンショットです:リクエストを 2 回試みましたが、2 回ともハングアップしてからタイムアウトしました

私はまだこの種のスタックの初心者なので、問題がどこにあるのかよくわかりません。

これが私のバックボーン ビューです。特にない。ほこりを使って形をレンダリングします。submit メソッドでは、フォームのすべてのデータを配列に収集し、新しいユーザー モデルを形成してからサーバーに保存します。繰り返しますが、サーバーはデータベースに表示されているデータを保存しています。ただし、Firebug を見ると、POST リクエストがそこでハングアップして終了しないことがわかります (サーバーからの応答をまだ待っているかのように、ロードが回転しています。

define(['dust/addUser','models/userModel'], function(AddUser, UserModel) {
    AddUser = Backbone.View.extend({
        initialize: function() {
            this.render();
        },
        tagName: 'div',
        id: 'addUserContainer',
        events: {
            'submit form': 'submit'
        },
        render: function() {
            $thisSelf = this.$el;
            dust.render('addUser','', function(error, output) {
                $thisSelf.append(output);
            });

            $('#wrapper').append($thisSelf);
        },
        /** 
         * @method submit
         * Capture the submit event, create a logical array of data, send to model
         */
        submit: function(event) {
            event.preventDefault();

            var dataArray = $('#addUser').serializeArray(),
                    data = _(dataArray).reduce(function(data, field) {
                        data[field.name] = field.value;
                        return data;
                    }, {});

                    var newUserModel = new UserModel(data);
                    console.log(newUserModel);
                    newUserModel.save({
                        success: function(model, response) {
                            console.log(model);
                            console.log(response);
                        },
                        error: function(model, response) {
                            console.log(model);
                            console.log(response);
                        }
                    });
        },
    });

私のserver.jsファイルに関連する部分は次のとおりです。ここでは、マングースを要求して接続を作成しています。

var application_root = __dirname,
express = require('express'),
path = require('path'),
mongoose = require('mongoose'),
app = express();

//database
mongoose.connect('mongodb://nodejitsu:840391d8ed69abf8583c9da46cd6a9c5@paulo.mongohq.com:10041/nodejitsudb7458111315');

作成した API ルートは次のとおりです。

app.post('/api/users', function(req, res) {
  var user;
  user = new UserModel({
    rider: req.body.rider,
    driver: req.body.driver,
    name: req.body.name,
    email: req.body.email,
    phone: req.body.phone,
    address: req.body.address,
    city: req.body.city,
    state: req.body.state,
    zip: req.body.zip,
    startTime: req.body.startTime,
    endTime: req.body.endTime,
    officeLocation: req.body.officeLocation
  });
  user.save(function(err) {
    if (!err) {
      return console.log("user created.");
    } else {
      return console.log(err);
    }
  });
});

任意のポインタをいただければ幸いです。:)

4

1 に答える 1

0

私はそれを考え出した。成功の応答を返しませんでした。そして、以前にそれをやろうとしたとき、私もすでに何かを返していることに気づきませんでした.

これが私の更新されたマングースコードです:

app.post('/api/users', function(req, res) {
  var user;
  user = new UserModel({
    rider: req.body.rider,
    driver: req.body.driver,
    name: req.body.name,
    email: req.body.email,
    phone: req.body.phone,
    address: req.body.address,
    city: req.body.city,
    state: req.body.state,
    zip: req.body.zip,
    startTime: req.body.startTime,
    endTime: req.body.endTime,
    officeLocation: req.body.officeLocation
  });
  user.save(function(err) {
    if (!err) {
      return res.send(200, 'User saved.');
    } else {
      return res.send(500)
    }
  });
});
于 2013-10-20T06:23:37.750 に答える