Firebase(Firestore)不保存数据,但也不抛出错误

问题描述 投票:0回答:1

我正在使用React Native Firebase和react-native-image picker让用户输入一些数据,选择或拍照,然后将所有内容保存到Firestore。我的handleCreateTool函数的开头有打印语句,所以我知道该函数正在触发,但.then和.catch块中的日志语句永远不会打印,并且数据不会保存到Firestore。

这是我的handleCreateTool函数:

export const handleCreateTool = (tool: Tool) => {
  console.log('Attempting to create tool: ', tool.name);
  firestore()
    .collection('tools')
    .doc(tool.tid)
    .set({
      tid: tool.tid,
      owner: tool.owner,
      name: tool.name,
      serialNum: tool.serialNum,
      imageUris: tool.imageUris,
      createdAt: tool.createdAt,
      updatedAt: tool.updatedAt,
    })
    .then(() => {
      console.log('Tool created: ', tool.name);
    })
    .catch(err => console.log('Error creating tool: ', err));
};

我在这里称之为:

const handleSavePress = () => {
    const tool: Tool = {
      tid: '123456asdfgh',
      serialNum: '013SN568TGH',
      name: 'Impact Wrench',
      imageUris: [],
      owner: 'Timmy',
      createdAt: new Date().getTime(),
      updatedAt: new Date().getTime(),
    };
    console.log('TOOL: ', tool);
    handleCreateTool(tool);
  };

从此按钮:

<Pressable
        onPress={() => handleSavePress()}
        style={({ pressed }) => [
          { opacity: pressed ? 0.5 : 1.0 },
          isSaveDisabled ? styles.saveButtonDisabled : styles.saveButton,
        ]}
        disabled={isSaveDisabled}>
        <Text style={styles.saveButtonText}>Save Tool</Text>
      </Pressable>

我也尝试用

调用它
onPress={handleSavePress}

但结果是一样的。没有错误,但也没有完成。 我使用完全相同的函数(只是更改集合名称和数据)来保存用户,效果很好。

如果有任何见解,我将不胜感激。

javascript react-native google-cloud-firestore react-native-firebase
1个回答
0
投票

这是一个网络错误,即使我的handleCreateTool函数没有抛出错误。当我返回并尝试运行我的 Firebase 身份验证代码(我知道它有效)时,firebase/auth 抛出错误

“[错误:[auth/network-request-failed] 发生网络错误(例如超时、连接中断或无法访问主机)。]”

我简单地通过关闭并重新启动模拟器,然后重新启动 Metro 并在模拟器上重新启动应用程序来修复它。

© www.soinside.com 2019 - 2024. All rights reserved.