1

Node、Express、およびBackboneを使用して開発しているWebサイトでは、通常のHTMLフォームを使用してユーザーにログインさせ、正常にログインするとユーザーセッションを作成します。このセッション情報へのアクセスはサーバー側で簡単で、ユーザーIDやユーザー名などにアクセスできますが、バックボーンでこの情報にアクセスする方法がわかりません。

次のようなコレクションのURLを作成できるようにUserIDを取得したいと思います。

url: '/api/users/'+ this.userID +'/movies'; 

しかし、サーバー側にあるセッションデータに基づいてuserIDを取得する最善の方法がわかりません。これには、別のモデルを作成する必要がありますか?たとえば、特定のurl / getリクエストを介してサーバーからセッションデータをフェッチする「ユーザー」モデルを作成する必要がありますか?

ありがとう!

4

1 に答える 1

3

私は何かを思いついたが、それでも提案を受け入れるだろう:

まず、userIdを返す関数をExpress.jsに作成します。

app.get('/api/current-user', middleware.requiresLogin, function(req, res){
  res.send(req.session.user._id);
});

次に、クライアント側で、Backboneモデルまたは$.getリクエストのいずれかを使用してIDを取得します。

var userID = $.get("/api/current-user");

$.when(userID).then(function(data){
    var user = new userCollection(data);
    user.fetch();
});

あなたのコレクションとモデルがこれを行うと:

window.userModel = Backbone.Model.extend({
    idAttribute: "_id"
});

var userCollection = Backbone.Collection.extend({
    model: userModel,
    initialize: function(options){
        this.url = "/api/users/"+options+"/movies";
        this.model.urlRoot = "/api/users/"+options+"/movies";
    }
});

myModel.save(); その後、正しく動作します。

于 2012-07-05T19:34:00.263 に答える