1

在我正在使用 Node、Express 和 Backbone 开发的网站上,我让用户使用常规的 HTML 表单登录,成功登录后,会创建一个用户会话。在服务器端访问此会话信息很容易,让我可以访问用户 ID、用户名等,但我不确定如何在 Backbone 中访问此信息。

我想获取 UserID,这样我就可以为 Collection 创建一个 URL,如下所示:

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

但我不确定如何最好地根据服务器端的会话数据获取用户 ID。这是否需要创建另一个模型——例如,通过特定的 url/get 请求从服务器获取会话数据的“用户”模型?

谢谢!

4

1 回答 1

3

我想出了一些东西,但仍然愿意接受建议:

首先,在 Express.js 中创建一个返回 userId 的函数:

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 回答