在节点中使用 'request' 从 URL 下载图像作为缓冲区,然后作为 varbinary(max) 插入到 SQL 数据库

Using 'request' in node to download image from URL as buffer and then insert into SQL database as varbinary(max)

我正在使用 google/facebook/ms Oauth 对用户进行身份验证,然后给他们一个刷新令牌。然后,我使用这个长期存在的刷新令牌来请求短期访问令牌。

我遇到的问题是我的应用程序使用社交个人资料的照片显示在前端,但 URL 将在社交令牌过期后停止工作。

我正在尝试将用户的个人资料照片作为 varbinary(max) 保存到 MSSQL DB,然后使用访问令牌将其返回到前端。

到目前为止,这是我的代码:

但我不确定如何从缓冲区而不是 base64 字符串中获取二进制文件?

      request.get(
        { url: req.user._json.picture, encoding: null },
        function(err, res, buffer) {
          res.on('close', () => {
            theRes.send(buffer.toString('base64'));
             return buffer.toString('base64');

               knex('USERS')
                 .update({ photo: photo })
                 .where({ id: req.user.dbUserID })
                 .then(() => {
                   console.log('PHOTO UPDATED');
                   console.log(res);
                   console.log(photo);
                })
                 .catch(err => {
                   console.log('ERROR ADDING PHOTO TO DATABASE');
                   console.log(err);
                 });
             });
          });
        }
      );

编辑:这与如何 return 从异步调用响应不同,我知道该怎么做并且我已经在代码示例中这样做了,你到底为什么要标记这个作为那个的副本???

它可以存储为 base64 字符串,因为它更容易处理,但最后我只是深入研究并实现了 blob 存储,因为在生产数据库中存储实际文件从来都不是一个好主意。