当试图在表中放置新条目时,它会错过put函数的执行。 Fuuny,它曾经可以工作,现在无论出于何种原因都没有。 allValues是一个数组,并完全返回数据。每当尝试调用saveData时,它都会执行除put函数之外的所有操作。
由于某种原因,我已经尝试了几次,并且效果很好,但是突然它不再放置条目了。试图玩耍,但似乎找不到问题?可能是由异步引起的吗?
//Amazon sdk
let AWS = require("aws-sdk");
let db = require('database');
//Amazon config
AWS.config.update({
region: "us-east-1",
endpoint: "https://dynamodb.us-east-1.amazonaws.com"
});
//DynamoDb client
var docClient = new AWS.DynamoDB.DocumentClient();
//Axios will handle HTTP requests to web service
let axios = require ('axios');
//The ID of the student's data that I will download
let requestID= '*********';
//URL where student data is available
let url = '*************************';
exports.handler = async (event) => {
//Get synthetic data
let allValues = (await axios.get(url + requestID)).data.target;
let allStart = (await axios.get(url + requestID)).data.start;
for(let i = 0; i < allValues.length; i++){
//db.saveData(i, allValues[i], allStart);
}
db.saveData();
};
和我的database.js
et AWS = require("aws-sdk");
//Create new DocumentClient
let documentClient = new AWS.DynamoDB.DocumentClient();
//Returns all of the connection IDs
//module.exports.saveData = async (sId, sValue, sTime) => {
module.exports.saveData = async () => {
let params = {
TableName: "SynData",
Item:{
"synId": 66,
"synValue": 1579.21,
"synTime": "2019-01-01"
}
};
//return documentClient.put(params).promise();
documentClient.put(params, function(err, data) {
if (err) {
console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("Added item:", JSON.stringify(data, null, 2));
}
});
};
日志未显示put函数的任何回报。
答案 0 :(得分:3)
saveData()
是async
,因此它返回一个承诺。您需要await
。另外,我不明白您为什么放弃了.promise()调用。使用回调已经过时,而且更加复杂。
您的代码应如下所示:
module.exports.saveData = async () => {
let params = {
TableName: "SynData",
Item:{
"synId": 66,
"synValue": 1579.21,
"synTime": "2019-01-01"
}
};
return await documentClient.put(params).promise();
};
在您的客户端上,只需等待saveData():
for(let i = 0; i < allValues.length; i++){
await db.saveData(i, allValues[i], allStart);
}