我需要将先前承诺结果中的数据放到下一个承诺结果中。
var database = admin.database().ref('/schema-v0_1/objects/subscription');
return database.once("value").then(function(snapshot) {
var array_user_subs = [];
snapshot.forEach(function(data) {
var user_uid = data.key;
var database_user_subs = admin.database().ref('/schema-v0_1/objects/subscription');
var promise = database_user_subs.child(user_uid).once("value", function(snapshot) {
}, function(error) {
});
array_user_subs.push(promise);
});
return Promise.all(array_user_subs);
}).then(function(array_user_subs) {
var array_subs_info = [];
array_user_subs.forEach(function(data) {
var user_uid = data.key;
data.forEach(function(snapshot) {
var gpa = snapshot.key;
var token_purchase = snapshot.val().token;
var sku_purchase = snapshot.val().sku;
var promise = promisify(publisher.purchases.subscriptions.get)({
packageName: 'com.example',
subscriptionId: sku_purchase,
token: token_purchase
});
//how to linked user_uid with promise?
array_subs_info.push(promise);
});
}
return Promise.all(array_subs_info);
}).then(function(array_subs_info) {
//here I get array with results of promise, but how to get linked with result user_uid from previous promise in previous then()?
});
在第一个then
中,我从带有promise的firebase数据库中获取结果,并请求获取有关user_uid
订阅的数据,并将此请求的结果放入promise
。但是如何将user_uid
与promise
相关联?
答案 0 :(得分:1)
你可以创建一个"运输"承诺范围之外的数组(因此它在所有.then
块中可用,在您的情况下,您在创建database
对象的同一级别上),推送{{1你在哪里使用它们创建promises然后在你需要的地方撤回它们,只需确保carriage数组与你传递给user_uid
调用的数组具有相同的索引,这样就可以将id映射到相应的承诺:
Promise.all