我只是在解析json时尝试访问数据库。这段小代码让我的生活充满了地狱
[
{
Id: 1,
Name: 'Customer1',
AddressId: 1,
Address :
{
Id: 1,
Street: 'Some street'
}
},
{
Id: 2,
Name: 'Customer2',
AddressId: null,
Address : null
}
]
var value = {“旅行活动”:[1,2],“旅行风格”:[3,4]};
function loopColumns(val, cb){
db.one('select tag_name from t_tag where tag_id = $1', val)
.then(function (data) {
//console.log(data.tag_name)
cb(null, data.tag_name)
});
}
这是输出
产量
旅游活动:
产量
旅行方式:
美食
美味的食物,Hicking
美食,Hicking,xyz
美食,Hicking,xyz,测试
我喜欢将输出视为
旅游风格:美食,嘻嘻 旅行活动:xyz,测试
Plz拯救我的生命
答案 0 :(得分:2)
Promise.all
(iterable)方法返回一个promise,它在iterable参数中的所有promise都已解析时解析。
使用for-loop
代替for-in
循环来迭代array
function loopColumns(val, cb) {
db.one('select tag_name from t_tag where tag_id = $1', val)
.then(function(data) {
cb(null, data.tag_name)
});
}
var value = {
"Travel Activity": [1, 2],
"Travel style": [3, 4]
};
for (var i in value) {
var output = '';
var promiseArr = [];
for (var j = 0, len = value[i].length; j < len; j++) {
var promise = new Promise(function(resolve) {
loopColumns(value[i], function(err, res) {
resolve(res);
});
});
promiseArr.push(promise);
}
Promise.all(promiseArr).then(function(arr) {
var op = arr.join(', ');
output += i + ' : ' + op + ' \n';
console.log('output \n' + output);
});
}
&#13;
答案 1 :(得分:1)
使用each
实用程序模块中的async
,而不是使用for
循环。