1 回答
TA贡献1780条经验 获得超3个赞
不应在方法中使用回调,而应将 a 链接到该方法。使用回调时,该方法将返回随后在最后一个块中分配给的回调。火基文档setthensetundefinedresultthen
此外,您不必在每个方法中都提供相同的参数。您可以通过在最后链接方法来替换它们。handleErrorthencatch
...
return admin
.database()
.ref("users/" + userRecord.uid)
.set({
...userData,
interests,
})
.then(() => admin.auth().createCustomToken(userRecord.uid))
.then((token) => {
console.log("token: ", token);
return {
token,
error: null,
userId: userRecord.uid,
};
})
.then((result) => {
console.log("result: ", result);
return result;
}).catch(handleError);
在我看来,你的代码很难阅读。编写更具可读性的代码将使调试过程更容易,通常,异步/等待可以提高可读性。
async/await您的代码版本:
async (
_root,
{ data: { password, interests, email, ...userData } },
{ prisma }
) => {
try {
const userRecord = await admin.auth().createUser({
email,
password,
displayName: `${userData.firstName} ${userData.lastName}`,
});
console.log("Successfully created new user:", userRecord);
await admin
.database()
.ref("users/" + userRecord.uid)
.set({
...userData,
interests,
});
const token = await admin.auth().createCustomToken(userRecord.uid);
console.log("token: ", token);
return {
token,
error: null,
userId: userRecord.uid,
};
} catch (error) {
console.log("error: ", error);
return { token: null, error, userId: null };
}
};
当然,可读性是主观的。选择一种你和你的队友喜欢的风格。
添加回答
举报