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ですか?
Ah!このような小さな間違い!ご協力いただきありがとうございます。 –