На веб-сайте, который я разрабатываю, используя Node, Express и Backbone, у меня есть вход пользователя с использованием обычной формы HTML, которая при успешном входе в систему создает сеанс пользователя. Доступ к этой информации о сеансе легко на стороне сервера, предоставляя мне доступ к идентификатору пользователя, имени пользователя и т.д., Но я не уверен, как получить доступ к этой информации в Backbone.
Я хочу получить UserID, чтобы создать URL-адрес для коллекции следующим образом:
url: '/api/users/'+ this.userID +'/movies';
Но я не уверен, как лучше всего получить идентификатор пользователя на основе данных сеанса, которые находятся на стороне сервера. Будет ли это требовать создания другой модели - скажем, "модели пользователя", которая извлекает данные сеанса с сервера через конкретный запрос url/get?
Благодарю!
Я придумал что-то, но все равно буду открыт для предложений:
Сначала создайте функцию в Express.js, которая возвращает userId:
app.get('/api/current-user', middleware.requiresLogin, function(req, res){
res.send(req.session.user._id);
});
Во-вторых, на стороне клиента извлекайте идентификатор, используя либо модель Backbone, либо запрос $.get:
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(); затем работает правильно.