Ответ OpenWhisk WebAction возвращает пустое тело

Я развернул действие в OpenWhisk, используя интерфейс командной строки в качестве веб-действия. Я пытаюсь вызвать его из Postman / curl. Я возвращаю ответ, который мне нужен в параметре body, как это предлагается здесь

Вот мой код:

function login(args){
  const username = args.user.username;
  const password = args.user.password;

  const user = {
    uName: 'abc',
    userCn: 'Full Name',
    token: 'fsgdfhj'
  };

  function authenticateUser(){
    if(username === '' || password === ''){
        return new Promise((resolve, reject) => {
            reject({
                headers: { 'Content-Type': 'application/json' },
                statusCode: 401,
                body: "Please enter username and password!"
            });
        });
    }
    else if(username==='a' && password ==='a'){
        return new Promise((resolve, reject) => {
            resolve({
                headers: { 'Content-Type': 'application/json' },
                statusCode: 200,
                body : user
            }) ;
        });
    }
  }

  authenticateUser()
    .then(() => {
      console.log('resolved and body is -> '+user);
    })
    .catch(()=> {
      console.log('rejected -> '+stderr);
    });

}

exports.main = login;

Развертывание действия как:

$ wsk -i action create /guest/package/actionName --kind nodejs:6 zipFileWithPackageJson.zip --web true

Ситуация такова, что когда я использую цикл if-else if, не заключая его в function authenticationUser(), я могу получить ответ. Когда я заключаю его в функцию и пытаюсь вызвать функцию, как делаю это выше, я получаю пустой ответ. Я должен заключить его в функцию, потому что мне нужно выполнить ряд операций, прежде чем я проверю имя пользователя и пароль. Я буду заключать эти операции в разные функции и вызывать их одну за другой, используя

function1()
 .then(function2)
 .then(function3)
 .then(authenticateUser)
 .catch(err => {
    console.log(err)
  }); 

Если я проверю журналы для этого действия с помощью команды $ wsk -i activation logs <activation ID>, я увижу их, как и ожидалось. Просто тело ответа полностью пусто.

Это синтаксис в NodeJS, который я пишу неправильно, или это OpenWhisk, который напрямую ожидает блок разрешения внутри основной функции?


person Gaurang Deshpande    schedule 22.06.2017    source источник


Ответы (1)


Ваша функция должна вернуть обещание, как в return authenticateUser.

person user6062970    schedule 22.06.2017
comment
Ах! Такая маленькая ошибка! Спасибо за вашу помощь. - person Gaurang Deshpande; 23.06.2017