2

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

4

1 回答 1

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 );
    }
}
于 2015-07-21T08:58:14.763 回答