Предопределенные URL-адреса Promise TypeError: res.json не является функцией NodeJS error response - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь создать массив предварительно подписанных URL-адресов для файлов, которые хранятся в моем приватном хранилище s3, но я не могу вернуть их из-за ошибки функции res.json. Я не могу понять это, несмотря на количество потоков, которые имеют такую ​​же проблему. Что не так с моим кодом?

const express = require('express');
const AWS = require('aws-sdk');
let config = require('./config');
let app = express();

var s3 = new AWS.S3();
s3.config.update({
    accessKeyId: config.accessKeyId,
    secretAccessKey: config.secretAccessKey,
    region: 'us-east-2'
});



// Create an array that houses pre-signed Urls
// Loop through x amt of times (depending on number of documents)
// Push each url into an array called 'preSignedUrls'
// Exit loop and reset array to re-generate new urls
var router = express.Router();


function getSignedURL(res) {
    Key = ['file1.pdf', 'file2.pdf'];
    let promises = [];
    let i = 0;
    while(i < Key.length){

        var params = {
            Bucket: 'bucketname',
            Key: Key[i],
            Expires: 36000
        };

        promises.push(s3.getSignedUrlPromise('getObject', params));
        console.log(promises)
        i++;
    }
    Promise.all(promises)
    .then( response => {
        res.json(response);
    }, function(err) { 
    console.log(err);
    });

}


router.route('/get_signed_url')
.get(getSignedURL);
//                 if (err) {
    // console.log(err);
    // return next(err);

router.route('/get_signed_url')
app.use('/v1', router);

var PORT = process.env.PORT || 3001;
var HOST = process.env.HOST || '11.123.346.789';

console.log("Listening on", HOST, PORT);
app.listen(PORT, HOST);

Вот что я получаю: (node:6717) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 5): TypeError: res.json is not a function

1 Ответ

0 голосов
/ 06 ноября 2019

Подпись контроллера запроса: getSignedURL(req, res ), объект ответа - второй, а не первый.

...