在我正在开发的网站上,使用Node,Express和Backbone,我使用常规HTML表单进行用户登录,成功登录后会创建用户会话。在服务器端访问此会话信息很容易,让我可以访问用户ID,用户名等,但我不确定如何在Backbone中访问此信息。
我想获取UserID,以便我可以为这样的Collection创建一个URL:
url: '/api/users/'+ this.userID +'/movies';
但我不确定如何最好地根据服务器端的会话数据获取userID。这是否需要创建另一个模型 - 例如,通过特定url / get请求从服务器获取会话数据的'用户'模型?
谢谢!
答案 0 :(得分: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();然后正常工作。