Mongoose自动将二进制数据转换为base64

时间:2018-01-24 19:43:08

标签: javascript node.js mongodb mongoose

我在Mongoose / MongoDB中遇到了一些奇怪的行为。

我的数据架构是:

    photo: {data: Buffer, contentType: String}

我使用以下代码将图像上传到mongoose:

let upload = (req, res) => {
   User.findByIdAndUpdate(req.params.id, { photo: fs.readFileSync(`uploads/${req.file.originalname}`)
  }, {safe: true, new: true})
    .exec()
    .then(() => {
        sendJsonResponse(res, 200, {"message": "photo uploaded"})
    })
    .catch(err => {
        sendJsonResponse(res, 500, err)
    })
 };

以上成功上传图片如下:

enter image description here

奇怪的行为:

根据我的知识,mongoose / mongoDB将binary data作为binary data返回,并且用户必须先将其转换为base64 string才能使用它。我错了吗?

就我而言,当我从mongoose中提取数据时,我没有得到binary data。我得到转换后的base64请注意,我没有在任何转换二进制数据的地方放置任何代码。

下面是返回数据的图像:

enter image description here

在将数据返回给用户之前我console.log我的数据服务器端:

enter image description here

我的问题:

  1. 任何人都可以解释造成这种情况的原因吗?
  2. mongoose能否自动转换二进制数据?
  3. 这是否意味着我不需要实现“binary to base64”转换代码?
  4. 如果mongoose能够自动执行此操作,那就太棒了!但我很困惑这是一个错误还是一个功能。

0 个答案:

没有答案