2012-07-05 127 views
1

在我正在開發的使用Node,Express和Backbone的網站上,我使用常規HTML表單進行用戶登錄,當登錄成功時,創建一個用戶會話。在服務器端訪問這個會話信息很容易,讓我可以訪問用戶名,用戶名等,但我不確定如何在Backbone中訪問這些信息。從服務器端代碼獲取會話信息到客戶端代碼

我想要獲取的用戶名,這樣我可以像這樣的集合創建一個URL:

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

但我不知道如何以最佳方式去獲取基於這就是會話數據的用戶ID在服務器端。這是否需要創建另一個模型 - 比如說,一個'用戶'模型,通過特定的url/get請求從服務器獲取會話數據?

謝謝!

回答

2

我想出了一些東西,但仍然是開放的建議:

首先,在Express.js一個函數,返回用戶名:

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

其次,在客戶端,使用一個骨幹模型或$不用彷徨獲取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();然後正常工作。

相關問題