我正在使用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}
但结果是一样的。没有错误,但也没有完成。 我使用完全相同的函数(只是更改集合名称和数据)来保存用户,效果很好。
如果有任何见解,我将不胜感激。
这是一个网络错误,即使我的handleCreateTool函数没有抛出错误。当我返回并尝试运行我的 Firebase 身份验证代码(我知道它有效)时,firebase/auth 抛出错误
“[错误:[auth/network-request-failed] 发生网络错误(例如超时、连接中断或无法访问主机)。]”
我简单地通过关闭并重新启动模拟器,然后重新启动 Metro 并在模拟器上重新启动应用程序来修复它。