Я хотел бы, чтобы имя пользователя создало запись, связанную с этой записью. Это должно происходить на сервере, а не через исходное клиентское соединение. Единственное место, которое я вижу на сервере для доступа к имени пользователя, - canPerformAction. Можно ли переписать сообщение, чтобы вставить имя пользователя перед созданием/обновлением записи в разъеме для хранения? И даже если бы я написал свой собственный коннектор для хранения, имя пользователя не будет передано API-интерфейсу соединителя хранилища. Можете ли вы дать мне другие варианты или рекомендации?Как переписать сообщение, чтобы указать имя пользователя
2
A
ответ
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);
}
}