1 回答

TA貢獻1780條經(jīng)驗 獲得超4個贊
不應在方法中使用回調,而應將 a 鏈接到該方法。使用回調時,該方法將返回隨后在最后一個塊中分配給的回調?;鸹臋nsetthensetundefinedresultthen
此外,您不必在每個方法中都提供相同的參數(shù)。您可以通過在最后鏈接方法來替換它們。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 };
}
};
當然,可讀性是主觀的。選擇一種你和你的隊友喜歡的風格。
添加回答
舉報