【发布时间】:2019-07-22 08:14:40
【问题描述】:
我有一个 Android 应用,可以将电话号码列表发送到我项目中的云函数。然后,服务器应该检索用户所有电话号码的列表,获取两个数组之间的交集(相同元素),然后将交集数组中用户的 Firebase Auth 用户 ID 发送回应用程序。
这是我想出的:-
// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');
// The Firebase Admin SDK to access the Firebase Realtime Database.
const admin = require('firebase-admin');
admin.initializeApp();
const auth = admin.auth();
const _ = require('underscore');
exports.getUids = functions.https.onCall((data, context) => {
return auth.listUsers().then(userRecords => {
var allPhoneNumbers = [];
userRecords.users.forEach(user => allPhoneNumbers.push(user.phoneNumber));
var phoneNumbers = _.intersection(allPhoneNumbers, data);
var Uids = [];
//the next line is where I am nesting promises
phoneNumbers.forEach(phoneNumber => auth.getUserByPhoneNumber(phoneNumber).then(user => Uids.push(user.uid)));
return Uids;
}).catch(error => console.error(error));
});
我从未使用过 JavaScript 编程,但我正在尝试。现在已经2天了,我只是不知道如何解决这个问题。我已经尝试了至少 10 种不同的方法。我发现承诺真的很难处理。任何帮助表示赞赏。
【问题讨论】:
-
@paradox 我尝试使用 async/await 但我无法理解一般的 JS 语法。我需要一些额外的帮助:(。我很快就会在这里发布我的 async/await 方法,这样你们就可以告诉我我做错了什么。
-
嵌套没问题,问题在于使用
forEach。 -
@Bergi 我现在知道了,我认为嵌套是问题所在,因为编译器会发出警告。
标签: javascript node.js firebase promise google-cloud-functions