2017-06-22 7 views
0

OpenWhiskにWebアクションとしてCLIを使用してアクションをデプロイしました。私はPostman/curlから呼び出そうとしています。私が使用している場合、OpenWhisk空のボディを返すWebAction応答

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

状況は次のとおりです。

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; 

などのアクションを展開する:私はここに here

を示唆したように、私は身体パラメータでほしい応答を返す午前は私のコードですfunction authenticationUser()にそれを囲まずにif-else ifループを実行すると、応答が得られます。私が関数にそれを囲み、私が上でそれをやっているように関数を呼び出そうとすると、空白の応答が得られます。 ユーザー名とパスワードを確認する前に一連の操作を実行する必要があるため、関数に囲まなければなりません。私は別の関数でこれらの操作を囲み、私はコマンド$ wsk -i activation logs <activation ID>を使用して、このアクションのログをチェックすると、予想通り、私はそれらを見ることができます

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

を使用して、それらを次々に起動されます。レスポンスボディは完全に空です。

私が間違って書いているのはNodeJSの構文ですか、またはmain関数内のresolveブロックを直接期待しているOpenWhiskですか?

答えて

1

あなたの関数は、return authenticateUserのように約束を返す必要があります。

+0

Ah!このような小さな間違い!ご協力いただきありがとうございます。 –

関連する問題