【问题标题】:How to Rewrite a Message to Include username如何重写消息以包含用户名
【发布时间】:2015-07-16 14:25:58
【问题描述】:

我希望创建记录的用户名与该记录相关联。这应该发生在服务器上,而不是通过原始客户端连接。我在服务器上看到的唯一可以访问用户名的地方是 canPerformAction。是否可以在存储连接器中创建/更新记录之前重写消息以插入用户名?即使我要编写自己的存储连接器,用户名也不会传递给存储连接器 API。你能给我任何其他的选择或指导吗?

【问题讨论】:

    标签: deepstream.io


    【解决方案1】:

    可以使用 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 );
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多