4

これが私のモデルです。

library.BookModel = Backbone.Model.extend({
    urlRoot: '/api/books',
    defaults: {
        id      : null,
        imageurl: 'noimage.jpg', 
    }
});

book.destroy を呼び出して削除リクエストを発行しようとしています。しかし、それはリクエストをトリガーしていません。アプリの初期化時。モデルには、サーバーからのデータが取り込まれます。モデルには 2 つの ID 属性が設定されています。id(クライアント側 ID) および_id(mongodb ID)。モデルの初期化関数で、クライアント側の ID を book.attributes.id = book.attributes._id として初期化しました。すべてが設定されています。しかし、削除リクエストを開始できないようです。どこが間違っているのか教えてください。ここで何か不足していますか?

私のバックエンドルーターは、削除リクエストを処理するように定義されています。

app.delete('/api/books/:id', function(req, res){...});

4

1 に答える 1

16

あなたの場合(mongodb)は idAttribute を使用して id 属性を設定してみてください_id。これは、サーバーによって設定された ID です。

library.BookModel = Backbone.Model.extend({

    urlRoot: '/api/books',

    idAttribute: '_id',

    defaults: {
        imageurl: 'noimage.jpg', 
    }

});

クライアントの Backbone によって自動的に設定される ID は、 id ではなくcidです。cid は、モデルがサーバー上で同期され、サーバー ID を取得するまで使用できます。

于 2012-12-26T08:34:02.887 に答える