Arrays Node.JS追加数组并转换为JSON
我在下面运行了一些函数来获取不同的数据,我正在尝试创建/附加到一个数组来“创建”一个新的数组,然后我可以将其JSON.stringify并传递到Jade视图,我似乎只能获得它所做的两个循环中的“k”变量,并用“”输出为“coin1coin2”而不是在每个硬币名称后添加余额和地址(倍数)的JSON数组Arrays Node.JS追加数组并转换为JSON,arrays,json,node.js,for-loop,Arrays,Json,Node.js,For Loop,我在下面运行了一些函数来获取不同的数据,我正在尝试创建/附加到一个数组来“创建”一个新的数组,然后我可以将其JSON.stringify并传递到Jade视图,我似乎只能获得它所做的两个循环中的“k”变量,并用“”输出为“coin1coin2”而不是在每个硬币名称后添加余额和地址(倍数)的JSON数组 // list all wallets // app.get('/wallet', function(req, res){ var coins = app.get('coins');
// list all wallets //
app.get('/wallet', function(req, res){
var coins = app.get('coins');
var addresses = "";
for (var k in coins) {
addresses += k;
console.log('Coin: ' + k);
//console.log(k+' => '+coins[k]);
connect(coins[k]);
client.getBalance('44abc0a80102', 6, function(err, balance) {
if (err) return console.log(err);
addresses += balance;
//console.log('Balance: ' + balance);
});
client.getAddressesByAccount('44abc0a80102', function(err, address) {
if (err) return console.log(err);
addresses["address"] += address;
});
}
console.log(addresses);
res.render('wallet', {
title: 'Wallet',
address: JSON.stringify(addresses)
});
});
在Jade视图中,我只是做
p=address
来显示完整的数组,这样我至少可以在视图中创建循环逻辑之前看到我得到了什么。这里的问题是,您的for
循环是同步的,而您的client.getBalance
和client.getAddressesByAccount
调用(几乎肯定)不是
当您的for
循环完成时,您的客户端.getBalance
和客户端.getAddressesByAccount
操作仍在进行中,因此他们还没有机会填充您的地址。因此,当它被传递到模板系统时,它是空的
您可能希望使用类似于的方式来执行此操作。看起来是这样的:
// list all wallets
app.get('/wallet', function(req, res){
// array? object?
var coins = app.get('coins');
async.map(coins, function(coinId, cb) {
// ???
console.log('Coin: ' + JSON.stringify(coin));
// not sure what this does!
connect(coin);
client.getBalance('44abc0a80102', 6, function(err, balance) {
if (err) return cb(err);
client.getAddressesByAccount('44abc0a80102', function(err, address) {
if (err) return cb(err);
return cb(null, {
address: address,
balance: balance,
});
});
});
}, function(err, addresses) {
// note that we only act on an error here
if (err) {
return console.log(err);
}
// [{address: ..., balance: ...}, ...]
console.log(addresses);
res.render('wallet', {
title: 'Wallet',
address: JSON.stringify(addresses),
});
});
});
addresses
值将是{address:…,balance:…}
对象的数组。我不确定你期望它是什么,因为在某一点上你把它当作一个字符串,然后你把它当作一个对象