получение информации о сеансе из кода на стороне сервера в код на стороне клиента

1

На веб-сайте, который я разрабатываю, используя Node, Express и Backbone, у меня есть вход пользователя с использованием обычной формы HTML, которая при успешном входе в систему создает сеанс пользователя. Доступ к этой информации о сеансе легко на стороне сервера, предоставляя мне доступ к идентификатору пользователя, имени пользователя и т.д., Но я не уверен, как получить доступ к этой информации в Backbone.

Я хочу получить UserID, чтобы создать URL-адрес для коллекции следующим образом:

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

Но я не уверен, как лучше всего получить идентификатор пользователя на основе данных сеанса, которые находятся на стороне сервера. Будет ли это требовать создания другой модели - скажем, "модели пользователя", которая извлекает данные сеанса с сервера через конкретный запрос url/get?

Благодарю!

Теги:
express
cookies
backbone.js

1 ответ

3
Лучший ответ

Я придумал что-то, но все равно буду открыт для предложений:

Сначала создайте функцию в 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(); затем работает правильно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню