使用Ruby从Mongodb读取二进制数据

我有一个MEAN.JS应用程序,它使用下面这段代码将二进制数据写入一个Mongodb(db版本v2.6.5):

UserSchema.pre('save', function(next) { if (this.password) { this.salt = new Buffer(crypto.randomBytes(16).toString('base64'), 'base64'); this.password = this.hashPassword(this.password); } next(); }) 

尝试从ruby(v 2.1.5与mongo v1.11.1)读取这个二进制数据我有一个base64解码错误:

 2.1.5 :001 > Base64.strict_decode64(salt) `unpack': invalid base64 (ArgumentError) 

试图在二进制模式下解压salt会导致错误的数据:

 [239, 191, 189, 239, 191, 189, 90, 239, 191, 189, 46, 120, 8, 239, 191, 189, 45, 239, 191, 189, 20, 221, 150, 239, 191, 189, 239, 191, 189, 57] 

30个字符,而不是原来的16个

似乎mongo gem以UTF-8string的forms读取二进制数据并将其破坏

我怎样才能恢复从mongodb存储的缓冲区中的原始string?

 crypto.randomBytes(16).toString('base64')