2

何らかの理由で this.collection.create() がエラーを返していますが、興味深いことに、エラー メッセージはコレクションに追加したばかりのモデルのようです。

this.collection.create({
    name: $('#big-input').val(),
    firstRemark: $('#small-input').val(),
    postedBy: window.user.displayName,
    twitterHandle: window.user.twittername,
    pictureUrl: window.user.profilePic

},{wait: true,    

  success: function(response){
     console.log("success");
     console.log(response)

  },
  error:function(err){
      console.log(err)

   }

});

これは、console.log(err) の後に得られるものです。

ここに画像の説明を入力

exports.newPost = function(req, res){
  console.log("GOT NEW TWEET REQUEST");
  var newPost = new Post(req.body)
  newPost.dateCreated = new Date();
  newPost.save();
  res.send(200);
};

以下の回答のおかげで、「実際の」エラーを印刷できました。以下に示すようxhr.responseTextに、'OK' で 'status' は 200 です。この応答が成功をトリガーするのにエラーが発生するのはなぜですか?

ここに画像の説明を入力

コレクションに parse メソッドもあります

parse: function(response){
    this.page = response.page;
    this.perPage = response.perPage;
    this.total = response.total;
    this.noofpages =response.noofpages;

    return response.posts;
},
4

2 に答える 2

3

これは予期されることです。Model.Save documentationを見てください。これには、エラーコールバックが(model, xhr, options)パラメーターとして呼び出されることが記載されています。

応答の実際の内容が必要な場合は、2 番目のパラメーターresponseTextプロパティから取得できますxhr.responseText。jquery ドキュメントに jqXHR 要素の詳細があります: http://api.jquery.com/jQuery.ajax/#jqXHR

成功コールバックのパラメーターも正しくありません-それはかかります(model, response, options)

編集:

それが問題の原因であるかどうかは完全にはわかりませんが、サーバーは成功時にステータス コード 200 とモデルの JSON を返すはずです。Backbone.Syncのドキュメント をご覧ください。

wait: trueコードを見ると、属性セットがサーバーから返された属性で拡張されるため、これはオプションとして渡すときに重要に見えます。ここでバックボーンで使用される options.success 関数を見て、私が何を意味するかを確認してください。サーバーから「OK」を返すと、何か問題が発生する可能性があるように見えますが、それがまさにあなたが経験している問題であるかどうかはわかりません.

EDIT2:上に書いたことを少し修正:戻り値が渡されModel.parseます。カスタム解析関数を定義したので、サーバーは、モデルの単純な JSON ではなく、それで動作する何かを返す必要があります。

于 2013-08-09T16:38:03.427 に答える
3

wrapErrorエラー関数は、backbone.jsの関数で定義されている 3 つの引数を受け取ります。

  model.trigger('error', model, resp, options);

したがって、あなたの出力は正しいです。エラー関数に変数を追加して、応答 (2 番目の引数) をキャプチャし、代わりにそれをログに記録して、デバッグに役立てることができます。

于 2013-08-09T16:36:54.123 に答える