0
//global array to store dynamodb query result
var store = [];
//function that to retrive socket data based on user email id as a hash key and give json to pass into query by taking email as input
var getSocketParams = (email) => {
return {
TableName: "socketSockets",
KeyConditionExpression: "user_id = :em",
ExpressionAttributeValues: {
":em": email
}
};
}
//query 1 which retrive all sockets details from respective table
var q1 = (callback) => {
retrivalDetail(getSocketParams(em), function(err, res) {
if (err) callback(err, null);
callback(null, res);
});
};
//query 2 take input as a result of query 1 response and second a callback
var q2 = (res, callback) => {
//here i made some logic to check callback is not executed until all items in query 1 response executed and that respective data fetched from respective table if have any
var ctr = 0;
res.Items.forEach(function(d) {
var payload_params_l = {
TableName: "socketPayload",
KeyConditionExpression: "#mac = :mac",
ExpressionAttributeNames: {
"#mac": "mac"
},
ExpressionAttributeValues: {
":mac": d.socket_id
},
ScanIndexForward: false,
Limit: 1
};
retrivalDetail(payload_params_l, function(err, res) {
if (err) callback(err, null);
store.push(res);
ctr++;
if (ctr === Object.keys(res.Items).length) {
callback(null, store);
}
});
});
};
//my function call to excute query 1 and query 2 here problem is due to asynchronous nature of node js i guess before getting query 1 result completely query2 will be start executing so i place q2 inside q1 callback here how can i retrive all data from q2 inside loop and pass all data after finishing loop to q2 callback
function call() {
q1(function(err, res) {
if (err) done(err, null);
q2(res, function(err, res) {
if (err) done(err, null);
//final function done which gives response to API request done(error ,response)
done(null, res);
});
});
};
call();
問題への入力として渡している2デシベルクエリでの実行q2をQ2コールバックに入れてください。このコードを改善するための良い提案があります。ループ内のq2からすべてのデータを取得し、q2コールバックにループを完了した後にすべてのデータを渡すことができます。完全QUERY2クエリ1の結果を取得する前に、私は推測によるノードのjsのイベントループの非同期性に1つのクエリの結果は、私が直面しています別のクエリの非同期ノードJSここ
私は初心者です可能であればノードjsの非同期パッケージを非同期モジュールを使用してこれについてどのような助けになるか
https://caolan.github.io/async/docs.html#eachOfはあなたに@yMagありがとう機能async.forEachOf使用することをはるかに優れています先ほど非同期で非同期を使用していないと言っていましたが、非同期でメソッドforEachOfを解決するためには.....ここでは、私が共有したいと思う別のサンプルコードとその作業があります –