Использование «запроса» в узле для загрузки изображения из URL в качестве буфера, а затем вставки в базу данных SQL как varbinary (max) - PullRequest
2 голосов
/ 05 апреля 2019

Я аутентифицирую пользователей с помощью Google / Facebook / MS Oauth, а затем я даю им маркер обновления.Затем я использую этот долгоживущий токен обновления для отправки запросов на кратковременные токены доступа.

Проблема, с которой я сталкиваюсь, заключается в том, что мое приложение использует фотографию социального профиля для отображения на веб-интерфейсе, но URL-адрес перестает работатьпосле истечения срока действия социального токена.

Я пытаюсь сохранить фотографию профиля пользователя в MSSQL DB как varbinary (max), а затем отправить ее обратно клиенту с токенами доступа.

Вот мой код до сих пор:

Но я не уверен, как получить двоичный файл из буфера вместо строки 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);
                 });
             });
          });
        }
      );

РЕДАКТИРОВАТЬ: Это не то же самое, что возвращать ответ от асинхронного вызова, я знаю, как это сделать, и я уже делаю это в примере кода, с какой стати вы бы отметили это как дубликат этого ???

...