此代码段按ID查找用户,如果找不到用户,则会创建一个,但是...
我收到“预期在箭头函数array-callback-return中返回值”警告
findUser(id)
.then((user) => {
if (user.empty) {
return createUser()
.then((user) => setUser(user));
} else {
const updatedUser = user.docs[0];
return {
id: updatedUser.id,
...updatedUser.data(),
};
}
})
我无法摆脱它,我不确定为什么会这样。 谢谢!希望这段代码对您有所帮助。真是一团糟:)
答案 0 :(得分:0)
问题在于您不能始终从findUser
的{{1}}内部返回值。您应该返回.then
调用:
createUser
这很有用,因为这意味着if (user.empty) {
return createUser()
.then
和createUser
完成时,最终的Promise链将解决。否则,setUser
/ createUser
Promise将与外界断开连接-您将无法确定它何时完成或处理其错误。
请注意,您不需要调用setUser
的匿名回调-您可以将setUser
函数本身传递给setUser
:
.then
您还可以考虑使用return createUser()
.then(setUser);
/ async
,控制流程将更加清晰:
await