我希望创建记录的用户名与该记录相关联。这应该发生在服务器上,而不是通过原始客户端连接。我在服务器上看到的唯一访问用户名的地方是canPerformAction。是否可以在存储连接器中创建/更新记录之前重写消息以插入用户名?即使我要编写自己的存储连接器,用户名也不会传递给存储连接器API。你能给我任何其他选择或指导吗?
答案 0 :(得分:3)
可以使用dataTransform函数将用户名(以及任何其他数据)添加到外发消息中。请在此处找到深入的解释:
http://deepstream.io/tutorials/transforming-data.html
将用户名传递到存储连接器有点棘手,因为记录和用户之间没有1:1的关系。如果您想创建私人记录,我宁愿将用户名作为记录名称的一部分,例如
private-johndoe/iam7f3vy-2mgd656jrx3di
并使用permissionHandler的canPerformAction
方法确保所有以'private-'开头的记录名继续使用与其进行交互的用户名
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 );
}
}