我是Node.js的新手。我正在使用DynamoDB本地从数据库中读取数据,如下所示。
function readFromTable (params){
docClient.get(params, function(err, data) {
if (err) {
console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
result = JSON.stringify(data, null, 2);
console.log ("got result");
console.log (result);
}
});
据我所知,它是一个异步函数,无法返回。异步数据仅在函数成功事件中可用。
但是我需要在函数外部提供result
数据,因为我需要将它返回到html。我该怎么做?
答案 0 :(得分:2)
对于你的情况,我建议使用promises。这是你的代码。
function readFromTable(params) {
return new Promise((resolve, reject) => {
docClient.get(params, function(err, data) {
if (err) {
console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
return reject(err);
} else {
console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
result = JSON.stringify(data, null, 2);
console.log ("got result");
return resolve(result);
}
});
});
}
readFromTable(yourParams).then((results) => {
console.log('You got your results');
});
答案 1 :(得分:1)
答案是回调或承诺。可以在函数'docClient'中访问每个变量。考虑回调中的简单示例:
function readFromTable (params) {
function anotherFunction(callback) {
//do something
var someVariable = '';
callback(someVariable);
}
docClient.get(params, function (err, data) {
if (err) {
console.log(err);
} else {
anotherFunction(function (someVariable) {
console.log(someVariable);
// you can access data here;
console.log(data);
})
}
})
};
我希望我有所帮助。