[英]How to return non undefined values in Hapijs api from amazon dynamodb javascript SDK query?
这已经让我抓狂了两天了。 我只想返回一个值:从Amazon dynamob javascript SDK到hapijs中的特定路由。
我的配置是:
和从package.json:
“ hapi”:“ ^ 16.6.2”,
“ aws-sdk”:“ ^ 2.183.0”,
“ babel-core”:“ ^ 6.26.0”,
“ babel-preset-es2015”:“ ^ 6.24.1”,
我不喜欢的route.js文件如下:
import _myConfig from './config';
import AWS from 'aws-sdk';
import SESSIONS from './CRUD-sessions.js';
AWS.config.update({
accessKeyId: "XXXXXXXX",
secretAccessKey: "xxxxxxxxxx",
region: "us-east-1",
httpOptions: {timeout: 500}
});
const routes = [
{
path: '/retrieveLastSession',
method: 'GET',
handler: async ( request, reply ) => {
var myLastSession = await SESSIONS.retrieveLastSession(console, "myEmail@gmail.com");
console.debug("myLastSession: " + myLastSession);
return reply(myLastSession).code(200);
}
}
];
export default routes;
还有我的CRUD-sessions.js文件:
'use strict';
import _myConfig from './config';
import AWS from 'aws-sdk';
const SESSIONS =
{
retrieveLastSession : async function (console, escapedInputEmail) {
var ddb = new AWS.DynamoDB();
var params = {
TableName: "sessions",
"ExpressionAttributeValues": {":escapedEmail" : {"S" : escapedInputEmail} },
"KeyConditionExpression": "email = :escapedEmail",
"Limit": 1,
ScanIndexForward: false
};
var _reply = undefined;
await ddb.query(params, function(err, data) {
if (err) {
console.error(err + ' Unable to read last session item ' + err.stack);
}
else if (data === undefined || data.Items === undefined ||
data.Items.length<1) {
console.log('last session item empty or partly empty');
}
else {
console.debug("data: " + JSON.stringify(data));
_reply = {
'token' : data.Items[0].token.S,
'email': escapedInputEmail,
'timestamp' : data.Items[0].timestamp.N
};
console.debug("last session: " + JSON.stringify(_reply));
}
});
console.debug("_reply: " + JSON.stringify(_reply)); // prints undefined !!!
return _reply;
}
};
export default SESSIONS;
在/ retrieveLastSession路由中,无论是否带有异步/等待组合,我都不会得到除var myLastSession之外的任何东西!
任何想法? 欢迎帮助!
找到了它:我没有返回值,而是制作了一个回调函数,并将其作为参数传递给了retrieveLastSession函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.