Javascript 如果返回为空,如何让函数继续

Javascript 如果返回为空,如何让函数继续,javascript,reactjs,Javascript,Reactjs,我正在开发聊天应用程序,现在我正在开发创建新聊天的功能。为了防止用户能够创建重复的聊天记录,我提出了这个方法 user1是预定义的。user2是通过在表单中输入来定义的。handleSubmit检查是否已经存在,如果“isChat”从我的数据库返回一个id,用户将被重定向到已经存在的聊天 我的另一部分有问题。如果“isChat”未定义,我的函数将不会继续并在第一个等待函数处停止 async function handleSubmit(event) { event.preventDef

我正在开发聊天应用程序,现在我正在开发创建新聊天的功能。为了防止用户能够创建重复的聊天记录,我提出了这个方法

user1是预定义的。user2是通过在表单中输入来定义的。handleSubmit检查是否已经存在,如果“isChat”从我的数据库返回一个id,用户将被重定向到已经存在的聊天

我的另一部分有问题。如果“isChat”未定义,我的函数将不会继续并在第一个等待函数处停止

  async function handleSubmit(event) {
    event.preventDefault();
    const isChat = await getChatId(user1, user2);
    if (isChat) {
      setChatId(isChat);
      setDefinedPartnerName(true);
    } else {
      await initiateNewChat(user1, user2, messages);
      const chatId = await getChatId(user1, user2);
      setChatId(chatId);
      setDefinedPartnerName(true);
    }
  }
这是我对这件事的看法:

//Get chat ID by user1 and user2
export async function getChatId(user1, user2) {
  return fetch(`/api/${user1}/${user2}`, {
    method: 'GET'
  })
    .then(response => {
      if (response.status !== 200) {
        throw new Error(response.statusText);
      }
      return response;
    })
    .then(response => response.json());
}

如果没有这两个用户的记录,此函数将无法返回任何内容。

可能是由于“抛出”导致的错误

尝试:

还可以改进错误处理的语法:
在我的快速路线上解决了这个问题

我的express route有一个try…catch函数,我给它的catch部分一个
response.json(false)

这是一个修补程序。但我真的不想在后端的东西上花太多时间


谢谢大家的帮助

是的。如果服务器上的两个用户之间没有通信,mongoose会告诉我“无法读取未定义的属性'\u id',”函数的第一部分工作正常。(如果已经有通信)如果有任何错误,您应该在第二部分中有一个
.catch(err=>{return{}})
块``
export async function getChatId(user1, user2) {
  return fetch(`/api/${user1}/${user2}`, {
    method: 'GET'
  })
    .then(response => {
      if (response.status !== 200) {
        // throw new Error(response.statusText);
        return false;
      }else{
        return response;
      }
    })
    .then(response => response.json());
}