Как использовать .map () и запросить, чтобы получить данные base64 из URL и вернуть новый массив?

#javascript #node.js

#javascript #node.js

Вопрос:

В Nodejs у меня есть функция для создания base64Data из моего URL, я просто не понимаю, почему мне не удалось извлечь данные из функции. Я новичок в использовании Promises для получения продукта, возвращаемого из функции. Я думаю, что это может быть моей проблемой здесь. Я пытаюсь получить данные base64 с помощью request npm. У меня есть массив URL, отправленных из интерфейса, и мне нужно сопоставить каждый из них, чтобы получить данные base64. Затем я пытаюсь поместить данные в новый массив, который будет отображать данные base64 для каждого URL.

Вот что я пытался сделать..

 const getbase64Data = (files) => {
    files.map((image, index) => {
      request.get(image, function (error, response, body) {
        if (!error amp;amp; response.statusCode == 200) {
          data =
            "data:"  
            response.headers["content-type"]  
            ";base64,"  
            Buffer.from(body).toString("base64");
          let array = [];
          array.push(data);
        }
      });
    });
    return array;
  };

console.log(getbase64Data(signatures));
  

Когда я запускаю консоль.войдите, как указано выше, он возвращается в виде пустого массива. Я предполагаю, что это способ чтения Javascript.

Редактировать:

Запрос содержит ошибку

 Error: Invalid protocol: data:
    at Request.init (/Users/node_modules/request/request.js:458:31)
    at new Request (/Users/node_modules/request/request.js:127:8)
    at request (/Users/node_modules/request/index.js:53:10)
    at /Users/node_modules/request/index.js:61:12
    at Function.get (/Users/node_modules/request/index.js:100:12)
    at /Users/routes/api.js:327:15
    at Array.map (<anonymous>)
    at getbase64Data (/Usersroutes/api.js:326:18)
    at /Users/routes/api.js:360:15
    at Layer.handle [as handle_request] (/Users/node_modules/express/lib/router/layer.js:95:5)
    at next (/Users/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/Users/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/Users/node_modules/express/lib/router/layer.js:95:5)
    at /Users/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/Users/node_modules/express/lib/router/index.js:335:12)
    at next (/Users/node_modules/express/lib/router/index.js:275:10)
  

Комментарии:

1. переменная с именем array определена внутри функции map, но вы пытаетесь вернуть ее из внешней функции. Попробуйте return files.map(.... . Array.prototype.map использует обратный вызов для преобразования одного массива в другой массив. Видите, moz Вы допускаете ошибки без сбоев. Возможно, вы захотите, чтобы консоль регистрировала что-то внутри обратного вызова для request.get, если вам не удается получить изображение.

2. Спасибо, что сообщили мне об ошибке, я обновил детали с ошибкой