我正在尝试通过Firebase中的特定功能包括一个用户列表(超过50个)。这是我的代码:
Object.keys(newUsers).forEach((key) => {
console.log(newUsers[key]['name']);
admin.auth().createUser({
uid: key,
email: newUsers[key]['email']
password: newUsers[key]['InitialPwd'],
disabled: false,
emailVerified: false,
displayName: newUsers[key]['name'],
}).then((userRecord) => {
return console.log('Success');
}).catch(function(error) {
console.log("Error:", error);
});
});
错误是(对于每条记录):
{错误:发出请求时出错:超时超过10000ms。 在FirebaseAppError.FirebaseError [作为构造函数](/srv/node_modules/firebase-admin/lib/utils/error.js:39:28) 在FirebaseAppError.PrefixedFirebaseError [作为构造函数](/srv/node_modules/firebase-admin/lib/utils/error.js:85:28) 在新的FirebaseAppError(/srv/node_modules/firebase-admin/lib/utils/error.js:119:28) 在/srv/node_modules/firebase-admin/lib/utils/api-request.js:117:23 在 在process._tickDomainCallback(内部/进程/next_tick.js:228:7)处errorInfo:{代码: “应用程序/网络超时”, 消息:“发出请求时出错:超时超过10000ms。” },codePrefix:“ app”}
我该如何解决?
答案 0 :(得分:0)
云功能设置为在短时间内运行。如果您在Cloud Function中进行大量工作,则在完成之前可能会超时。我建议采取一些解决方案:
1。更改您的Cloud Functions超时。在Cloud console中,检查顶部以确保选择了当前项目,然后在中间找到函数列表。单击您的功能。您现在应该在函数详细信息中。点击“编辑”。 “保存”按钮的正上方是“更多”。选择“更多”,您将看到一个增加超时的选项。这可以修改功能保持有效的时间。
2。更改批处理大小,以便一次创建更少的用户。
3。确保您的诺言如期实现。如果您没有将呼叫返回到createUser
,将无法访问生成的UserRecord
。
Object.keys(newUsers).forEach((key) => {
console.log(newUsers[key]['name']);
return admin.auth().createUser({
uid: key,
email: newUsers[key]['email']
password: newUsers[key]['InitialPwd'],
disabled: false,
emailVerified: false,
displayName: newUsers[key]['name'],
}).then((userRecord) => {
return console.log('Success');
}).catch(function(error) {
console.log("Error:", error);
});
});
4。关于这一点,我可能是错误的,但是看来用户是一个接一个地创建的,而不是同时创建的。最好使用Promise.all,以便可以同时创建所有用户,而不是等一个用户完成后再开始下一个。