Node.js Async/Await函数只返回最后一个结果,而不是for中所需的所有结果
我有这个密码Node.js Async/Await函数只返回最后一个结果,而不是for中所需的所有结果,node.js,asynchronous,mongoose,Node.js,Asynchronous,Mongoose,我有这个密码 for (let i = 0; i < 10; i++) { if (addresses.includes(jsonResponse[i].address)){ console.log(jsonResponse[i].address + " --> " +jsonResponse[i].balance) var testbalance = new Balance({address: jsonResponse
for (let i = 0; i < 10; i++) {
if (addresses.includes(jsonResponse[i].address)){
console.log(jsonResponse[i].address + " --> " +jsonResponse[i].balance)
var testbalance = new Balance({address: jsonResponse[i].address, balance: Math.round(Number(jsonResponse[i].balance))}) //saves the top10 richlist addresses
function saveBalance(){
return testbalance.save();
}
}
}
async function sendData() {
const data = await saveBalance(); //this only gets the last result of the for, but i need it to get all the results [0,1,2,3,4,5,6,7,8,9] , but it only saves the [9]
Balance.find({}, function(err, data){
bot.sendMessage(groupId, JSON.stringify(data))
});
}
sendData();
for(设i=0;i<10;i++){
if(addresses.includes(jsonResponse[i].address)){
log(jsonResponse[i]。地址+“-->”+jsonResponse[i]。余额)
var testbalance=new Balance({address:jsonResponse[i]。address,Balance:Math.round(Number(jsonResponse[i].Balance))}//保存前10个richlist地址
函数saveBalance(){
返回testbalance.save();
}
}
}
异步函数sendData(){
const data=wait saveBalance();//这只获取for的最后一个结果,但我需要它来获取所有结果[0,1,2,3,4,5,6,7,8,9],但它只保存[9]
Balance.find({},函数(err,data){
bot.sendMessage(groupId,JSON.stringify(数据))
});
}
sendData();
for基本上读取一个api,并将其保存在我的数据库(mongoose)中,然后调用一个函数,该函数读取所有保存的数据并将其发送到Telegrame(它是一个telegram bot)最后,我决定按照建议用数据填充一个数组,然后使用mongoose model.create上传它 最后设法使它异步
var testbalance = [];
//populates testbalance array in order to upload to the DB model
for (let i = 0; i < 10; i++) {
if (addresses.includes(jsonResponse[i].address)){
console.log(jsonResponse[i].address + " --> " +jsonResponse[i].balance)
testbalance.push({
address: jsonResponse[i].address,
balance: Math.round(Number(jsonResponse[i].balance))
})
}
}
//uploads the data
function saveBalance(){
return new Promise ((resolve) => Balance.create(testbalance,function(err) {
if (err);
resolve();
}))
}
//sends the data
async function sendData(){
const data = await saveBalance(); //waits for saveBalance resolution
//sends the data to the tgBot
Balance.find({}, function(err, data){
bot.sendMessage(groupId, JSON.stringify(data))
});
}
sendData();
var testbalance=[];
//填充testbalance数组以上载到DB模型
for(设i=0;i<10;i++){
if(addresses.includes(jsonResponse[i].address)){
log(jsonResponse[i]。地址+“-->”+jsonResponse[i]。余额)
testbalance.push({
地址:jsonResponse[i]。地址,
balance:Math.round(数字(jsonResponse[i].balance))
})
}
}
//上传数据
函数saveBalance(){
返回新承诺((解析)=>Balance.create(testbalance,函数(err){
如果(错误);
解决();
}))
}
//发送数据
异步函数sendData(){
const data=wait saveBalance();//等待saveBalance解析
//将数据发送到tgBot
Balance.find({},函数(err,data){
bot.sendMessage(groupId,JSON.stringify(数据))
});
}
sendData();
您必须建立结果数组并返回它。