Firebaseに格納された配列のトークンを返そうとしていますが、私は 'promise'を使用しています。'promise'は空の配列を返します
function getUsersTokens() {
let dbRef = db.ref('/system/users');
let result = new Promise((resolve, reject) => {
dbRef.once('value', (snap) => {
let tokens = [];
snap.forEach(child => {
if(child.Status != "occupied"){
helper.getToken(child.key,db).then(function(token){
tokens.push(token);
});
}
});
resolve(tokens);
}, (err) => {
reject(err);
});
});
return result;
}
これは「ヘルパー」モジュールの「getToken」メソッドです。
exports.getToken=function(uid,db){
return db.ref(`/Tokens/${uid}`).once('value').then(function(result){
return result.val();
});
};
問題は、配列が空になる)私がプッシュするたびにそれがすべて(正常に動作しますが、終了getUsersTokens配列にトークンということです。
ありがとうございました。
それは動作しません削減使った例であります後でトークンが配列にプッシュされるためです。また、「Promise.resolve([])」は手間がかかり、約束を解決することは即時ではないという事実に依存しています。 –