I have been attempting to use the modular firebase sdk with RN for quite some days now… just learned about react-native-firebase upon reading the docs, I found how to use it with regular bare react-native not with expo-go react native
I Have a Problem writing native code, any solutions using it please also give the code
I have tried using firebase sdk for auth and database, auth works fine, but database cant write…
where I write (to database)…
import React, {useEffect, useState} from 'react';
import { useUid } from '../Backend/UidContext';
import {Button, TextInput, View} from 'react-native';
import { getDatabase, ref, child, push, update } from "firebase/database";
import style from "../Style";
const Post = ({user}) => {
const [post, setPost] = useState('');
const [newPostAdded, setNewPostAdded] = useState(false);
const Tuid = useUid();// Move the useUid hook call inside the component
const uid = Tuid["uid"]
function HandlePost(){
const db = getDatabase();
// A post-entry.
const postData = {
text: post,
};
// Get a key for a new Post.
const newPostKey = push(child(ref(db), 'posts')).key;
// Ensure the uid is a valid string before using it in the Firebase database reference
if (typeof uid === 'string' && uid.length > 0) {
// Remove invalid characters from the uid using a regular expression
const sanitizedUid = uid.replace(/[^a-zA-Z0-9]/g, '');
// Write the new post's data simultaneously in the posts list and the user's post list.
const updates = {};
updates['/posts/' + newPostKey] = postData;
updates['/user-posts/' + sanitizedUid + '/' + newPostKey] = postData;
update(ref(db), updates)
.then(() => {
setPost('');
setNewPostAdded(true);
});
console.log('Updated')
} else {
console.error('Invalid uid:', uid);
}
}
useEffect(() => {
if (newPostAdded) {
setNewPostAdded(false);
// Perform any additional actions or update state variables to reset the component
}
}, [newPostAdded]);
return (
<View style={style.container}>
<View>
<TextInput
placeholder="Enter new post"
value={post}
onChangeText={setPost}
/>
<Button title="Add Post" onPress={HandlePost}/>
</View>
</View>
)
}
export default Post;
code for UID
const userCredential= await createUserWithEmailAndPassword(auth, email, password);
console.log('User registered successfully!');
isNotLoggedIn = false;
const firebaseUid = userCredential.user.uid;
// You might want to setUid(firebaseUid) here as well if needed
setUid(firebaseUid)
// Example database operation
const db = getDatabase();
const postData = { user: firebaseUid };
const updates = {};
updates['/user-posts/' + firebaseUid + '/'] = postData;
await update(ref(db),updates);
thanks for your help
user24927923 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.