Функция теряет контекст внутри функции Promise.all (redu (acc, item) => {})) - PullRequest
0 голосов
/ 21 июня 2019

У меня есть функция

const integration = async (event) => {
    const user = await authenticateUser({
        email,
        password,
    })
    const authentication = path(['idToken', 'jwtToken'], user)

    return Promise.all(reduce(async (prevEvent, endpointId) => {
        const endpointDesc = endpoints[endpointId]

        let apiEvent = endpointDesc.actionEvent
        apiEvent.authentication = authentication

        if (endpointDesc.parameters.length > 0) {
            apiEvent = reduce((eventAcc, param) => {
                const prevPayload = eventAcc.payload
                const newPayload = { prevPayload, [param]: prevEvent.body[param] }
                return { ...apiEvent, payload: newPayload }
            }, apiEvent, apiEvent.parameters)
        }

        const lambdaParams = {
            FunctionName: apiFunctionArn,
            Payload: apiEvent,
        }

        const lambdaRes = await lambda.invoke(lambdaParams).promise()
        return lambdaRes
    }, Promise.resolve(), event.endpointId))
}

ошибка из нее undefined is not a function

lambda.invoke это фрагмент кода, вызывающий ошибки

lambda объект приходитот const lambda = new AWS.Lambda() (aws-sdk)

lambda.invoke, прежде чем строка с return Promise.all(reduce(async (prevEvent, endpointId) => { заработает так, как должна работать

Я уже пробовал такие вещи, как lambda.invoke.bind (lambda)и т.д., но, если честно, в прошлый раз я полностью забыл объектно-ориентированный JavaScript: X

, если это имеет смысл, я использую reduce из ramda

Спасибо заранее!

...