Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose自动将二进制数据转换为base64_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

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

Javascript Mongoose自动将二进制数据转换为base64,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我遇到猫鼬/猫鼬的一些奇怪行为 我的数据模式是: photo: {data: Buffer, contentType: String} let upload = (req, res) => { User.findByIdAndUpdate(req.params.id, { photo: fs.readFileSync(`uploads/${req.file.originalname}`) }, {safe: true, new: true}) .exec()

我遇到猫鼬/猫鼬的一些奇怪行为

我的数据模式是:

    photo: {data: Buffer, contentType: String}
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)
    })
 };
我使用以下代码向mongoose上传了一张图像:

    photo: {data: Buffer, contentType: String}
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)
    })
 };
上面的程序成功上传了一个图像,如下所示:

    photo: {data: Buffer, contentType: String}
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)
    })
 };

奇怪的行为:

    photo: {data: Buffer, contentType: String}
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)
    })
 };
据我所知,mongoose/mongoDB将
二进制数据
返回为
二进制数据
,用户必须将其转换为
base64字符串
,然后才能使用。我错了吗

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

下面是返回数据的图像:

在将数据返回到用户I
控制台之前。日志
我的数据服务器端:

    photo: {data: Buffer, contentType: String}
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)
    })
 };

我的问题:

    photo: {data: Buffer, contentType: String}
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)
    })
 };
  • 谁能解释一下是什么原因造成的
  • mongoose是否能够自动转换二进制数据
  • 这是否意味着我不需要实现“从二进制到base64”的转换代码

  • 如果猫鼬能够自动做到这一点,那就太棒了!但我不知道这是一个bug还是一个特性。

    我认为最好在Mongoose Github问题的追踪器上问这样的问题