大家好,我正在尝试创建一个 API 来计算计算器服务的收入,它本质上所做的就是从计算器所需的 dB 中获取值,然后将它们传递给它并获取结果值。然而,我需要将结果写回到 dB 中以进行记录。
但是我遇到了一些问题
我正在尝试使用 axios get 将一些对象从 Mongoose 数组传递到 JSON API URL 服务,但在将结果数组写入我的 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},
]
*/
任何帮助将不胜感激
最佳答案
您可以使用 map 功能。
const fn = (item) => {
return item *10;
}
[1,2,3,4,5].map( fn );
在这个简单的示例中,函数 fn 对映射中的每个项目执行并返回一个值。如果将其分配给某些内容,则可以利用该值结果数组。
我显然将它们分开,但您也可以轻松地内联它们......或利用 forEach 函数。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
[1,2,3,4,5].map( item => item * 10 );
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
[1,2,3,4,5].forEach( item => {
console.log( item * 10 );
});
你的数组可以是任何东西,对象,数字等等,同样......你可以在函数中做任何事情。
关于javascript - 如何在 Mongoose 上为数组中的每个项目运行函数或单独写入数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54472244/