Привет всем. Я пытаюсь создать API для расчета дохода от службы калькулятора. Все, что он делает по сути, - это получает значения из дБ, которые нужны калькулятору, и пропускает их через него и получает результирующие значения.Однако мне нужно записать результаты обратно в дБ для ведения журнала.
Однако у меня возникают некоторые проблемы
Я пытаюсь передать некоторые объекты из массива Mongoose в службу URL-адресов JSON APIиспользуя axios get, и у меня возникают проблемы при записи результирующего массива в мой Mongoose dB
Может кто-нибудь помочь мне с тем, что мне не хватает?
См. ниже
/* Users :
_id : 5cac
username: sample
email: email@email.com
orderHistory: [
{xmr_hr: 9000},
{xmr_hr: 2000},
{xmr_hr: 3000}
],
profitHistory:[
{
xmr_usd_gross:
}
]
*/
var email = "email@email.com"
var id = "5cac"
function xmr(callback){
function getUsers(){
var cursor = User.find({email: email}, function (err, users) {
}).cursor();
return cursor;
}
var cursor = getUsers();
cursor.on('data', function(name){
const xmr_hr= name.orderHistory.map(element => element.xmr_hr);
var xmrLength = xmr_hr.length;
for (var i = 0; i < xmrLength; i++) {
console.log(xmr_hr[i]
// returns [9000,2000,3000]
// variables
var algo = "cn8"
var hr = xmr_hr
var wttURL = "wtt.com/json" + algo + hr[i]
axios.get(wttURL)
.then((response) => {
var btcGrossRevenue = response.data.coins.Monero.btc_revenue
console.log(btcGrossRevenue)
// runs through each value in array and returns revenue [0.06, 0.02, 0.03]
// below is my problem
var updateProfits = [{
xmr_usd_gross : btcGrossRevenue,
}]
User.findByIdAndUpdate(id, {upsert: false, "$addToSet": { 'profitHistory': updateProfits}},
function(err, user) {
if(err) { console.log(err) }
else {
console.log(user.length)
};
})
})
}
// initial callback
for (var v = 1; v < 2; v++)
xmr(function(v){})
// cronJob and callback continuation
var xmrJob = new cron.CronJob('* 10 * * * *', function() {
console.log('Function executed!');
for (var v = 1; v < 2; v++) // amount of times to run function
xmr(function(v){})
}, null, true);
xmrJob.start
Я знаю, что проблема в том, что я пытаюсь записать массив в объект внутри массива, но я не уверен, как передать каждый объект вмассив по отдельности.
Я думаю, что либо есть способ сделать это, просто запустив функцию обратного вызова индивидуально для каждого элемента объекта в массиве, либо найдя возможность разбирать полученный массив и записывать их последовательно.
Я бы хотел, чтобы мои Коллекции выглядели так, как только все написано
/* Users :
_id : 5cac
username: sample
email: email@email.com
orderHistory: [
{xmr_hr: 9000},
{xmr_hr: 2000},
{xmr_hr: 3000}
],
profitHistory:[
{xmr_usd_gross: 0.06},
{xmr_usd_gross: 0.03},
{xmr_usd_gross: 0.02},
]
*/
Любая помощь будет высоко ценится