如何重写邮件以包含用户名

时间:2015-07-16 14:25:59

标签: deepstream.io

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

1 个答案:

答案 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 );
    }
}