2015-07-16 2 views
2

Я хотел бы, чтобы имя пользователя создало запись, связанную с этой записью. Это должно происходить на сервере, а не через исходное клиентское соединение. Единственное место, которое я вижу на сервере для доступа к имени пользователя, - canPerformAction. Можно ли переписать сообщение, чтобы вставить имя пользователя перед созданием/обновлением записи в разъеме для хранения? И даже если бы я написал свой собственный коннектор для хранения, имя пользователя не будет передано API-интерфейсу соединителя хранилища. Можете ли вы дать мне другие варианты или рекомендации?Как переписать сообщение, чтобы указать имя пользователя

ответ

3

Имена пользователей (а также любые другие данные) могут быть добавлены к исходящим сообщениям с использованием функций dataTransform. Вы можете найти глубокое объяснение здесь:

http://deepstream.io/tutorials/transforming-data.html

Передача имен пользователей к разъему для хранения немного сложнее, так как нет 1: 1 связь между записью и пользователем. Если вы хотите создать личную запись, я бы предпочла сделать имя пользователя частью имени записи, например.

private-johndoe/iam7f3vy-2mgd656jrx3di 

и использовать canPerformAction метод в permissionHandler, чтобы убедиться, что все recordnames, которые начинаются с «линией частным» продолжает с именем пользователя, который взаимодействующее с ними

canPerformAction: function(username, message, callback) { 
    if(message.topic === C.TOPIC.RECORD) { 
     var recordName = message.data[ 0 ]; 
     if(recordName.substring(0, 8) === 'private-') { 
      var providedUsername = recordName.substring(8, recordName.indexOf('/')); 
      callback(null, providedUsername === username); 
     } 
    } else { 
     callback(null, true); 
    } 
}