728x90
반응형

 

 

이번에는 구글 파이어 베이스의 Cloud Firestore 데이터 추가 기능을 구현해보겠습니다

 추가할 때 이미지도 같이 저장해보도록 하겠습니다

 

아래의 목차와 같이 진행하겠습니다

 

  1. Storage 설정 및 폴더 추가하기
  2. App 내에서 이미지 데이터 컨트롤하기
  3. Stroage에 이미지 저장하기
  4. Cloud Firestore에 데이터 추가하기

 

우선 파이어 베이스의 이미지를 파일 저장소(Storage) 설정부터 하겠습니다

 

 


Storage 설정 및 폴더 추가

폴더를 추가하고 보안설정을 진행하도록 하겠습니다

 

 

파일저장소-설정
Storage 설정 및 폴더 추가

 

 

Rules 탭을 클릭해서

allow read, write로 설정하여

읽고, 쓰기를 가능하게 합니다

 

 

파일저장소-보안설정
파일저장소 보안 설정하기

 

 

이제는 이미지를 저장할 파일 저장소의 폴더 추가 및 설정을 끝냈습니다

 

 


App 내에서 이미지 데이터 컨트롤 하기

expo-image-picker 라이브러리를 설치합니다

 

사진을 촬영해서 바로 앱에 데이터를 전달하여 이미지를 저장하는 방법

앱 내의 사진첩을 접근해서 이미지 데이터를 불러와 저장하는 방법을 알아보겠습니다

 

 

새탭열기
마우스 우 클릭 화면

 

 

그 방법은 아래의 포스팅에 자세히 설명이 되어있습니다

포스팅을 클릭할 때 마우스 우 클릭해서  새 탭에서 링크 열기를 선택하시면 더 편하게 볼 수 있습니다

 

그럼 아래의 포스팅을 클릭해봅시다!

 

 

2022.07.29 - [Mobile/React_Native] - React Native X Expo 이미지 데이터 expo-image-picker로 이미지 업로드 구현하기

 

React Native X Expo 이미지 데이터 expo-image-picker로 이미지 업로드 구현하기

이미지 업로드 기능 구현하기 앱에서 이미지나 사진을 업로드할 경우 두가지 방법이있습니다 첫번째는 사진을 찍어서 업로드를 하는 방법 두번째는 자신의 사진첩에서 불러와 업로드 하는 방

tantangerine.tistory.com

 


 

반응형

 


Storage에 이미지 저장하기

 

아래와 같이 화면이 구성되어있다고 가정합시다

 

 

이미지데이터저장
이미지 데이터 저장

 

 

  const pickImage = async () => {
    console.log('이미지 선택');
    let imageData = await ImagePicker.launchImageLibraryAsync({
      mediaTypes: ImagePicker.MediaTypeOptions.All,
      allowsEditing: true,
      aspect: [4, 4],
      quality: 1,
    });
    if(imageData.uri){
      setImageUri(imageData.uri ? imageData.uri : '');
    }
  };

 

 

위와 같이 선언된 함수를 호출하여 이미지 사진첩 내 이미지의 데이터를 가져와서 setImageUri에 저장합니다

또 한, 미리 보기 기능이 구현되어있다면 저장할 때 imageData.uri가 있을 경우에만 저장하도록 합니다

 

 

 

 

등록버튼클릭
등록버튼 클릭이미지

 

등록버튼을 클릭하게 되면 아래와 같은 함수가 호출이 됩니다

 

이때 중요한 것은 blob형식으로 변경해야지만 최종적으로 파이어 베이스 storage에 업로드할 수 있습니다

 

사이드바에 공식문서를 참조하시면 더 많은 정보를 확인할 수 있습니다

 

blob 객체는 파일류의 변하지 않는 미가공 데이터를 나타내며, 텍스트와 이진 데이터 형식으로 읽을 수 있습니다

 

 

const upload = () => {
    confirmAlert('게시글을 등록하시겠습니까?', async () => {
      console.log('업로드 준비중!');
      if(!imageUri){
        Alert.alert('이미지를 등록해주세요.');
        return;
      }
      if(!title){
        Alert.alert('제목을 입력해주세요');
        return;
      }
      if(!content){
        Alert.alert('내용을 입력해주세요');
        return;
      }
      if(!currentUser.uid){
        Alert.alert('로그인이 필요합니다');
        return;
      }
      const currentUser = firebase.auth().currentUser;
      let date = new Date();
      let getTime = date.getTime();
      let data = {
        title: title,
        author: currentUser.email,
        desc: content,
        image: image,
        date: getTime,
        uid: currentUser.uid,
      };
      const response = await fetch(imageUri);
      const blob = await response.blob();
      const imageUrl = await imageUpload(blob, getTime);
      data.image = imageUrl;
      console.log(data);
      let result = await addDiary(data);
      if (result) {
        Alert.alert('글이 성공적으로 등록되었습니다!');
        setTitle('');
        setContent('');
        setImage(tempImage);
        setImageUri('');
      }
    })
  };

 

 

blob데이터
Blob 데이터 가져오기

 

 

fetch를 활용해서 주소를 실행시켜 결괏값을 가져와 blob함수를 실행하여 그 데이터 값을 storage에 저장하게 됩니다

 

 

 

그렇게 호출된 imageUpload에서 아래와 같이 실행하게 됩니다

blob과 데이터를 매개변수로 받아 파일 저장소(storage)에 저장하게 됩니다

저장 후   snapshot.ref.getDownloadURL()를 호출하여 storage에 저장된 url주소를 불러옵니다

그 불러온 url주소를 reurn 하여 cloud firestore에 저장합니다

 

 

export async function imageUpload(blob, date) {
  const storageRef = firebase
    .storage()
    .ref()
    .child('diary/' + date);
  const snapshot = await storageRef.put(blob);
  const imageUrl = await snapshot.ref.getDownloadURL();
  blob.close();

  return imageUrl;
}

 


Cloud firestore에 데이터 추가하기

 

 

addDiary호출하기
addDiary 호출

 

 

위와 같이 return값을 기본 Object객체에 추가하여 addDiary의 매개변수를 할당하여 함수 호출을 합니다

그리고 firebase.firestore() 함수, db.collection(). doc.(). set()의 두 가지 함수를 호출하여

diary라는 데이터 베이스 테이블 생성과 data의 객체 값들을 cloud firestore에 추가합니다

 

 

export async function addDiary(content) {
  try {
    const db = firebase.firestore();
    await db.collection('diary').doc(content.date + "D").set(content);
    return true
  } catch (err) {
    Alert.alert("글 작성에 문제가 있습니다! ", err.message)
    return false
  }
}

 

 

아래와 같이 파이어 스토어에 저장된 모습을 확인할 수 있습니다

collection('diary') // 테이블을 만들게 되면서 diary를 만들면서 없을 때에는 추가를 하게 됩니다

. doc(content.date + "D") // 저장한 날짜를 가져와 'D'를 붙여서 저장합니다 그것이 테이블의 PK KEY가 됩니다

하지만 위의 방식보다는 doc(content.date + "_" + content.author) 이 방식으로 변경하는 것이 더 유니크한 값이 되지 않을까 생각합니다 여러 유저들이 들어와서 이미지를 동시에 클릭한다면 분명 오류가 발생할 것이라 생각합니다

. set(content); // content객체의 값들은 아래에 이미지에서 확인할 수 있습니다

 

cloud-firestore
클라우드 파이어스토어 저장모습

 


 

이렇게 cloud firestore에 데이터 저장하는 방법과 파일 저장소(Storage)에 이미지를 저장하는 방법을 알아보았습니다

사이드바에 파이어 베이스 관련 공식 문서가 있으니 참고하세요

 

IT 개발 공부는 끝이 없기에 항상 공부를 해야 하는 직종이지요 하지만 포기하지 마시고 끝까지? 끝이 있을지는 모르겠지만 하시길 바랍니다

 

우리들의 대모험은 끝나지 않았습니다 그럼 파이팅 하시고 다음 포스팅도 기대해주세요 감사합니다

 

 

 

 

728x90
반응형
728x90
반응형

저번 포스팅에서 

Authentication & Cloud Firestore

서버 및 기능 구현을 완료하였습니다

 

2022.07.20 - [Server/Firebase] - React Native X Expo X 파이어 베이스 Authentication 및 Cloud Firestore 서버 구축

 

React Native X Expo X 파이어 베이스 Authentication 및 Cloud Firestore 서버 구축

Authentication이란? 이 서비스는 다양한 타 앱들의 정보로 계정 인증하여 보다 손쉽게 회원가입과 로그인을 구현할 수 있습니다. 그리고 타 앱 간의 정보 인증 이외에도 휴대폰 번호와 이메일 인증

tantangerine.tistory.com

 

 


 

회원가입 구현하기

firebase의 인증 기능을 사용하기 위해 

파이어 베이스의 함수를 호출해서 결과값을 받아 인증 및  회원가입을 진행하게 됩니다.

이때 고객의 기입정보를 데이터 베이스에 저장하며

인증 테이블에 고유키 값과 비밀번호도 저장하게 됩니다.

 

직관적으로 관리하기위해

firebaseApi.js 파일을 만들고 아래와 같이 코드 작성을 해서 

필요할 때 import 하여 사용합니다.

 

 

회원가입 폼 이미지

 

 

회원가입 폼에서 등록버튼을 누르면

registration() 함수를 호출하여

아래와 같은 함수를 실행하게 됩니다

 

 

import * as firebase from "firebase";
import "firebase/firestore";
import {
  Alert
} from "react-native";

export async function registration(nickName, email, password, navigation) {
  try {
    console.log(nickName, email, password)
    await firebase.auth().createUserWithEmailAndPassword(email, password);
    const currentUser = firebase.auth().currentUser;
    const db = firebase.firestore();
    db.collection("users")
      .doc(currentUser.uid)
      .set({
        email: currentUser.email,
        nickName: nickName
      });
    Alert.alert("회원가입 성공!")
    navigation.push("TabNavigator")

  } catch (err) {
    Alert.alert("무슨 문제가 있는 것 같아요! => ", err.message);
  }
}

 

 

회원가입을 진행하면 

firebase.auth().createUserWithEmailAndPassword(); 함수를 사용해서 

기입한 메일과 uid의 고유번호를 생성해서 식별자 테이블에 정보를 저장하게 됩니다

 

이때 중요한 것은 비동기(async/await)가 정말 중요합니다

회원가입이 끝날 때까지 다른 작업은 안 하는 것이 좋겠지요?

 

그리고 firebase.auth().currentUser 함수를 사용하게 되면

현재 자신의 uidemail 정보를 조회할 수 있습니다.

 

또한, 그 정보를 가지고 데이터베이스에 컬렉션의 상위는 usersuid를 저장합니다

그리고 emailnickName을 같이 지정하여 저장합니다.

 

 

 

식별자 데이터 생성 함수와 데이터 베이스에 저장하는 함수

 

 

 

위의 함수를 실행하게 되면 아래와 같이 저장됩니다

아래에 식별자는 자신의 이메일이 저장이 됩니다

사용자 uid는 고유한 키값으로 파이어 베이스에서 생성해줍니다

 

 

 

 

반응형

 

 

 

식별자 테이블에 정보가 저장된다

 

 

컬렉션의 user와 문서는 사용자 uid가 저장되며 필드는 

회원의 정보가 저장된 것을 확인할 수 있습니다

 

 

 

데이터 정보

 

 

 

위의 정보는 아래의 코드로 표현할 수 있습니다

 

 

 

{
    users : {
        IkafkITYpGXfYlxLsqU1W2uD2XC2 : {
            email : "sparta@gmail.com",
            nickName: "Gunhee"
        }
    }
}

 

 

 

로그인 구현하기

로그인 폼에서 아래와 같은 함수를 실행해서 

firebase.auth().signInWithEmailAndPassword(); 함수를 

호출해서 기입한 정보들이 현재 식별자 테이블에 있는지 확인을 합니다

 

로그인에 성공하면 탭 내비게이션 메인 페이지로 이동하게 됩니다

 

 

 

export async function signIn(email, password, navigation) {
  try {

    await firebase.auth().signInWithEmailAndPassword(email, password)
    navigation.push("TabNavigator")

  } catch (err) {
    Alert.alert('로그인에 문제가 있습니다! ', err.message);
  }
}

 

 

이렇게 회원가입 및 로그인 기능을 구현하였습니다

구글 파이어 베이스를 사용하면

정말 간편하게 구현할 수 있었습니다

 

이렇게 한 개씩 하다 보면 조금도 숙달이 되겠지요?

비동기 부분도 한 번씩 더 보고 더 깊게 공부를 해보아야겠다는

생각하게 되었습니다.

 

그럼 오늘도 파이팅 하시고~!

즐거운 대모험이 되시길 바랍니다!!

 

파이팅!!

728x90
반응형
728x90
반응형

Authentication이란?

이 서비스는 다양한 타 앱들의 정보로 계정 인증하여 보다 손쉽게

회원가입과 로그인을 구현할 수 있습니다.

 

그리고

타 앱 간의 정보 인증 이외에도 휴대폰 번호와 이메일 인증으로도

구현이 가능합니다.

 

이 기능을 사용하기 앞서 우선 

가장 중요한 데이터베이스를 구성해야 합니다

그래야 지만 회원가입의 유저 정보를 저장할 수 있습니다

 

그 데이터베이스를 구축하기 위해서는 

Cloud Firestore를  사용해보도록 하겠습니다

 

잠깐

저번에 배운 리얼타임 데이터 베이스와 또 다른 것입니다

같은 firebase의 데이터 베이스지만 서로 다른 기능들을 가지고 있습니다

 

2022.07.08 - [Server/Firebase] - React Native X Expo X 파이어 베이스 리얼타임 데이터 베이스 설정 및 조회, 추가, 삭제 기능 구현

 

React Native X Expo X 파이어 베이스 리얼타임 데이터 베이스 설정 및 조회, 추가, 삭제 기능 구현

리얼 타임 데이터 베이스란? 플랫폼과 실시간 데이터를 송신할 수 있는 기능이라고 생각하시면 됩니다 그리고 기능을 사용하기 위해서는 파이어 베이스가 가지고 있는 고유한 기능들을 사용하

tantangerine.tistory.com

 

두 가지의 차이점은 다음 포스팅 때 알아보도록 하고

우선 지금 구축할 데이터 베이스를 알아보도록 하겠습니다

 

 

 


 

 

 

Cloud Firestore이란?

리얼 타임 데이터베이스보다 확장성이 크며 직관적이 모델링과

풍부하고 빠른 쿼리와 원활한 확장성을 제공하고 있습니다

 

리얼타임 데이터베이스의 업그레이드 버전이라고 생각하시면 되겠습니다

하지만 꼭 그런 개념은 아니니 다음 포스팅 때 알아보도록 해요

 

 

우선 아래의 같이 폴더와 파일을 생성해줍니다

프로젝트를 생성하여 키값을 파일로 관리를 하기 위함입니다

 

일단 파이어 베이스 프로젝트를 추가하시지 않았다면 위의 포스팅에 들어가시면 프로젝트 추가 방법과

키값의 위치를 확인할 수 있습니다

 

 

그리고 Expo파이어 베이스구축하려고 하니 설치는 필수입니다!

expo install firebase

 

생성된 키값을 복사해서 

아래 와같이 파일을 생성합니다

 

폴더 및 파일 생성 키값설정

 

아래의 이미지처럼 export default를 해서 

여러 파일에서 사용할 수 있게 만들어 줍니다

 

 

키값 설정 이미지

 

그리고 마지막으로 데이터 베스 이를 만들기로 합시다

 

데이터베이스 만들기 Cloud Firestore

 

Cloud Firestore 만들기

 

 

파이어 베이스로 로그인하여 프로젝트 시작하면

대시보드의 빌드란에 Cloud Firestore가 존재하는 것을 확인할 수 있습니다

데이터 베이스 만들기 버튼을 클릭해서 진행해 봅시다

 

 

 

데이터베이스 보안규칙

 

 

프로덕션 모드로 진행하고

보안 규칙은 추후에 변경하도록 합니다

 

 

 

 

 

위치 설정은 aisia-northest2로 해주며 사용 설정 버튼을 클릭합니다

 

그럼 이제 보안 규칙을 변경하도록 하겠습니다

Cloud Firestroe에 들어가시면 규칙 탭을 확인하실 수 있을 겁니다

 

write 부분을 true로 변경해 줍니다

 

 

규칙 수정

 

 

 

 

이제 데이터 베이스 서버 구축이 완료되었습니다

그럼 서버와 앱을 연결합니다

 

 

app.js 일부분

 

 

위 와같이 import 하여 라이브러리와 접속에 사용할 키값을 가져옵니다

그렇게 firebase.initializeApp() 함수를 사용하여 연결합니다

 

 


 

 

반응형

 

 


 

Authentication 서비스 이용하기

 

위에서 언급했듯이 회원가입 기능과 로그인 기능을 구현하기 위해 필요한 서비스입니다

여러 타 앱들로 계정을 인증받아 정보를 데이터 베이스에 저장하며

Authentication는 고객들의 고유키를 저장하여

관리하는 기능으로 대시보드에서 어드민 페이지가 없이도 데이터 관리가 용이합니다

 

authentication 서비브 시작하기

 

 

그럼 시작하기 버튼을 클릭하여 서비스 이용할 준비를 하겠습니다

아래와 같이 로그인 제공업체 리스트를 볼 수 있으며

새로운 업체들도 추가할 수 있습니다

 

로그인 제공업체

 

 

아래의 제공업체를 클릭하면

2 단계 창이 노출되며 

여러 가지 정보들을 활용하여

업체 간의 인증서비스를 연동시킬 수 있습니다

 

 

 

로그인 제공업체 추가

 

 

아래와 같이 앱 ID와 비밀번호를 입력하여 진행하며

비밀번호 밑에 회색으로 고유 키값이 존재합니다

업체들 간의 데이터인증을 위한 키값이며 

업체들간의 방법과 키값은 모두 다르니

한번 사용 설정해서 어떻게 인증서비스를 이용하는지

이용해보는 것도 좋은 공부가 될 것입니다

 

 

새로운 로그인 제공업체 2

 

 

 

이렇게 서비스를 이용할 모든 준비는 끝이 났습니다

그럼 다음 포스팅에는 이 두 가지 서비스를 이용하여 

회원가입 시 데이터베이스에 고객의 정보를 저장하고

authentication에는 회원의 고유 키값과 비밀번호를 저장함으로써

회원 가입과 로그인 기능을 구현해보겠습니다

 

그럼 오늘 복습도 끝이 났습니다

하루에 2~3시간씩 공부를 하면

힘이 들지만 그래도 앞으로 조금씩 나아간다는 느낌이 확실히 있습니다

내년 말까지는 나만의 앱을 만들기 위해 노력해 보도록 하겠습니다

 

아직 대모험은 끝나지않았다는 것을 명심하시고!

같이 끝가지 나아가요!!

 

 

728x90
반응형
728x90
반응형

리얼 타임 데이터 베이스란?

플랫폼과 실시간 데이터를 송신할 수 있는 기능이라고 생각하시면 됩니다

그리고 기능을 사용하기 위해서는 파이어 베이스가 가지고 있는 고유한 기능들을 사용하면

쉽게 데이터를 주고받을 수 있습니다

 

이전에 포스팅을 했던 파일 저장소 스토리지는 이미지 파일을 정장하는 것이라면

리얼 타임 데이터베이스는 JSON 데이터를 받아

파이어 베이스의 데이터베이스에 저장하게 됩니다

 

두 가지의 기능의 차이점을 기억하시고

이제 리얼 데이터베이스를 생성하도록 하겠습니다

 

 

이전 포스팅에서 firebaseConfig.js 파일 생성한 것 기억하시나요?

 

 

2022.07.05 - [Server/Firebase] - React Native X Expo X 구글 파이어 베이스 서버 구축, 기본 세팅하기

 

React Native X Expo X 구글 파이어 베이스 서버 구축, 기본 셋팅하기

2022.06.30 - [Mobile/React Native] - [React Native X Expo] View, ScrollView, Text, Button, TouchableOpacity, Image 엘리먼트 & 태그 활용 리액트 네이티브 [React Native X Expo] View, ScrollView, Text,..

tantangerine.tistory.com

 

한번 확인해보시고 그럼 계속 진행하겠습니다

 

 

 firebaseConfig.js를 생성하셨으면

아래의 url 주소를 복사하셔서

firebaseConfig의 databaseURL에 value 값으로 지정해주시면 됩니다

 

리얼 타임 데이터 베이스 생성 #1

 

 

그럼 데이터 베이스에 데이터를 업로드를 한번 해보겠습니다.

이 방법은 파이어 베이스에서 직접 데이터를 업로드하는 방식입니다.

JSON 파일로 업로드가 가능하기 때문에

JSON 파일로 데이터를 만들어 놓았다면 쉽게 업로드는 하실 수 있을 겁니다.

 

오른쪽 상단 토글 아이콘을 선택하면 

JSON 데이터 불러오기라는 항목이 노출됩니다

 

 

리얼 타임 데이터 베이스 생성 #2

 

 

like라는 하위 경로에 데이터를 넣을지 아니면 최상위 경로에 넣을지도 정할 수 있습니다.

상위 경로로 이동하려면 아래의 파란색 블록으로 되어있는 url를 클릭하시면

이동이 가능합니다.

 

 

JSON 가져오기를 클릭하면 내 컴퓨터 내에서. JSON 파일을 업로드할 수 있는 창이 활성화됩니다.

 

 

 

리얼 타임 데이터 베이스 생성 #3

 

 

아래와 같이 창이 활성화되면 JSON 파일 업로드를 할 수 있습니다.

데이터 위치도 확인할 수 있어요!!

 

 

리얼 타임 데이터 베이스 생성 #4

 

 

저는 tip에 데이터를 넣었습니다.

그래서 아래와 같이 데이터가 구성이 되었네요

 

그럼 아래의 데이터를 읽어오는 방법을 구현해보겠습니다.

 

데이터 구조

 

 

Firebase 리얼 타임 데이터 베이스 Total Data Read. once() 함수 활용

 

ref()는 api통신을 할 수 있는 url 주소를 인자 값으로 받는다

그러면 통신이 이루어지고 특정 함수를 통해 데이터를 추가, 수정, 삭제를 할 수 있다

 

처음 databaseURL에 할당했던 url 주소가 기본 주소로 할당되어있어

전체 주소를 할당하지 않아도 됩니다

 

. then()은 자바스크립트의 api 통신 후 받은 데이터를 핸들링할 때 사용합니다.

 

아래의 함수는 파이어 베이스에서 데이터를 조회하기 위해

만들어 놓은 함수이기 때문에 그 규칙에 맞게 사용하면 되겠습니다.

공식문서에 맞게 사용하시면 됩니다.

 

snapshot이라는 변수명으로. val()를 사용하여 데이터를 리턴해올 수 있습니다.

그리고 그 데이터를 tip에 넣는 작업을 진행한 것입니다.

 

/tip이라는 경로에 있는 전체 데이터를 가져오게 되며

/tip/0이라는 경로에 있는 전체 데이터를 가져오게 된다는 의미는 위의 글과 같습니다

하지만 우리가 0에는 한 개의 데이터만 넣게 된다면

한개의 데이터만 읽어 올 수 있게 됩니다

 

그래서 데이터 구조의 요건을 어떻게 정립하는지가 더 중요할 수 있습니다

 

firebase_db.ref('/tip').once('value').then((snapshot) => {
   let tip = snapshot.val();
})

firebase_db.ref('/tip/0').once('value').then((snapshot) => {
   let tip = snapshot.val();
})

 

 

Firebase 리얼 타임 데이터 베이스 Save Data. set() 함수 활용

 

/like라는 곳에 데이터를 저장하려 합니다

저장할 때 사용하는 함수. set()입니다

 

내가 좋아하는 페이지를 저장하기 위해서는 누가, 무엇을 저장하는지에 대한 데이터가 필요합니다

유저의 유니크 아이디는 expo에서 제공하는 휴대폰 디바이스의 고유 키값을 사용합니다

그것을 활용하여 유저를 구분하는 인식 값으로 사용할 수 있습니다

 

유니크한 키값페이지의 시퀀스 넘버를 url경로로 지정하면 

아래와 같이 사용할 수 있습니다

 

expo install expo-application

import * as Application from 'expo-application';
const isIOS = Platform.OS === 'ios';


let uniqueId;
if(isIOS){
  let iosId = await Application.getIosIdForVendorAsync();
  uniqueId = iosId
}else{
  uniqueId = Application.androidId
}

firebase_db.ref('/like/'+userUniqueId+'/'+ tip.idx).set(tip,function(error){
    Alert.alert("찜 완료!")
});

 

 

 

파이어 베이스 플랫폼의 리얼 타임 데이터 베이스에 저장한 목록을 볼 수 있습니다

 

 

데이터 저장 현황

 

Firebase 리얼 타임 데이터 베이스 Delete Data. remove() 함수 활용

 

삭제할 데이터의 시퀀스 번호와 누구의 정보를 삭제할 것인지에 대한 유니크한 키값을 

url로 지정하여. remove() 함수를 통해 데이터를 삭제합니다.

 

삭제가 성공적으로 되었다면 

실시간으로 목록이 없어져야 합니다.

 

이때. ref(). once()함수를 사용하여 재조회를 해도 되지만

다시 조회한다면, 부하를 받을 수 있기 때문에 이렇게 처리하는 것이 좋을 수도 있습니다.

목록에 데이터 구조가 복잡하거나 부하가 되지 않는 상황이라면 구지 할 필요는 없을 것 같습니다.

 

아무튼 내부에서 자바 스크립터 filter를 활용하여 목록을 추출할 수 있습니다.

api를 호출하지 않고 목록에서 추가 삭제할 수 있다는 것만은 기억합시다.

 

const remove = async (cidx) => {
    let userUniqueId;
    
    if(isIOS){
        let iosId = await Application.getIosIdForVendorAsync();
          userUniqueId = iosId
    }else{
          userUniqueId = await Application.androidId
    }

    firebase_db
        .ref('/like/'+userUniqueId+'/'+cidx)
        .remove()
        .then(() => {
            Alert.alert("삭제 완료");
            let result = tip.filter((data,i)=>{
              return data.idx !== cidx
            })
            console.log(result)
            setTip(result)
    })
}

 

 

이것으로 파이어 베이스 세팅과 기능 구현을 끝이 났습니다.

파이어 베이스만 이러한 기능들을 구현하고 있고

다른 데이터 관리 툴들은 또 다른 기능들을 가지고 있습니다

여러 툴을 사용해야만 한다면 공부는 필수 겠지요!

 

오늘도 이렇게 포스팅을 마치며 한걸음 나아갑니다

 

언제나 그렇듯 힘들도 지치지만 힘내세요

아직 모험은 끝이 나지 않았으니까요!!

 

728x90
반응형
728x90
반응형

이전 포스팅에서 파이어 베이스와 앱 연동하는 방법을 

확인해보았습니다

 

못 보신 분들은 하단에 포스팅을 클릭해주세요

 

2022.07.05 - [Server/Firebase] - React Native X Expo X 구글 파이어 베이스 서버 구축, 기본 세팅하기

 

React Native X Expo X 구글 파이어 베이스 서버 구축, 기본 셋팅하기

2022.06.30 - [Mobile/React Native] - [React Native X Expo] View, ScrollView, Text, Button, TouchableOpacity, Image 엘리먼트 & 태그 활용 리액트 네이티브 [React Native X Expo] View, ScrollView, Text,..

tantangerine.tistory.com

 

 

그럼 본론으로 파이어 베이스의 몇 가지 기능을 설정하고 사용하는 방법까지 알아보겠습니다

알아보려는 기능은 2가지입니다

가장 기본적이면서 간단한 기능들이죠

 

  • 파일 스토리지 - 간단히 말하면 파일을 저장하는 장소라고 생각하시면 됩니다.
  • 리얼타임 데이터 베이스 - 파이어 베이스에서 제공하는 함수를 사용해서 데이터 저장, 수정, 삭제가 가능합니다 

 

 

정리하다 보니 리얼타임 데이터베이스는 다음 포스팅에서 해야겠네요

 

파일 스토리지 기능을 우선 알아보도록 하겠습니다

 

 

firebase의 파일 스토리지 설정 및 기능 구현 방법

 

 

파이어 베이스 홈페이지에서 

로그인 후 시작하기 버튼을 클릭하면

 

이전 포스팅까지 하셨다면 현재 프로젝트 공간에

자신의 프로젝트명이 노출되고 있는 것을 확인할 수 있습니다

클릭해서 이제 파일 스토리지를 활성화하로 가시죠!

 

파이어 베이스 파일스토리지 설정방법 #1

 

 

 

아래의 화면과 같이

Storage를 확인할 수 있으실 겁니다

그 버튼을 클릭하고

시작하기를 클릭하시면 이제 거의 끝난 거나 다름없습니다!

 

 

 

파이어 베이스 파일스토리지 설정방법 #2

 

아래와 같은 창이 노출되면 다음 버튼을 클릭하여 진행합니다

 

 

파이어 베이스 파일스토리지 설정방법 #3

 

 

그리고 파일 스토리지와 저장 장소를 설정합니다

지금 살고 있는 지역과 비슷하면 괜찮겠죠?

그래서 선택하고 완료 버튼을 클릭합니다

 

 

파이어 베이스 파일스토리지 설정방법 #4

 

파일을 저장할 수 있는 스토리지의 화면이 활성화됩니다

그럼 이미지만 저장해서 관리할 수 있는 폴더를 생성하면 편하겠죠?

폴더 모양의 아이콘을 클릭해서 폴더를 만들어 줍니다

 

저는 폴더명을 images라고 하려고요

빨간색으로 블록이 처리된 부분은 파일 저장 경로가 노출되어있는 것을 확인할 수 있습니다

 

파이어 베이스 파일스토리지 설정방법 #5

 

 

폴더를 생성하면 경로가 변경된 것을 확인할 수 있으며,

파일 업로드 버튼을 클릭하여 파일도 저장된 모습을 확인할 수 있습니다

 

 

파이어 베이스 파일스토리지 설정방법 #6

 

 

이렇게 저장된 파일은 외부 경로를 통해 이미지를 불러올 수 있어요

이미지 불러오는 법은 

마지막에 링크를 걸어 두겠습니다

 

 

 

 

이렇게 파일을 저장하는 공간을 만들어보았습니다

다음 포스팅에서는 리얼타임 데이터베이스 기능으로

저장공간에 파일을 저장하는 방법과

데이터를 추가, 삭제, 수정하는 방법을 알아보도록 하겠습니다

 

1일 1포스팅을 하려고 노력하고 있는데 쉽지는 않네요

그래도 이렇게 포스팅을 하며 복습하니 기억에도 많이 남고 하네요

힘들겠지만 오늘도 한걸음 나아갑시다!!

 

힘내시고 아직 대모험은 끝나지 않았으니까요!!

파이팅!!

 

 

 

 

2022.06.30 - [Mobile/React Native] - [React Native X Expo] View, ScrollView, Text, Button, TouchableOpacity, Image 엘리먼트 & 태그 활용 리액트 네이티브

 

[React Native X Expo] View, ScrollView, Text, Button, TouchableOpacity, Image 엘리먼트 & 태그 활용 리액트 네이티

View, ScrollView, Text, Button, Image 엘리먼트 & 태그 활용 엘리먼트 활용 화면의 영역(레이아웃)을 잡아주는 엘리먼트이다. App.js 상에서 View는 화면 전체 영역을 가진다. 아래와 같이 화면을 분할.

tantangerine.tistory.com

 

728x90
반응형
728x90
반응형

2022.06.30 - [Mobile/React Native] - [React Native X Expo] View, ScrollView, Text, Button, TouchableOpacity, Image 엘리먼트 & 태그 활용 리액트 네이티브

 

[React Native X Expo] View, ScrollView, Text, Button, TouchableOpacity, Image 엘리먼트 & 태그 활용 리액트 네이티

View, ScrollView, Text, Button, Image 엘리먼트 & 태그 활용 엘리먼트 활용 화면의 영역(레이아웃)을 잡아주는 엘리먼트이다. App.js 상에서 View는 화면 전체 영역을 가진다. 아래와 같이 화면을 분할.

tantangerine.tistory.com

 

위에는 리액트 네이티비의 화면 구성하는 포스팅입니다

관심있으시면 확인 해보세요~~!

 

파이어 베이스란?

 

파이어 베이스는 서버에 대한 지식이 많이 없어도

간편하게 서버를 구축할 수 있게 해주는 서비스입니다

이러한 것들을 서버리스라고 합니다

 

여기서 간략하게 서버리스가 무엇인지 설명하자면,

개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는

클라우드 네이티브 개발 모델입니다

 

장점은 애플리케이션이 필요할 경우에만 시작되며,

코드 실행이 종료되면 비용도 청구 되지않아 비용과 효율성이라는 장점이 있습니다

그 외에도 애플리케이션 스케일링 및 서버 프로비저닝과 같은

일상적이고 사소한 작업들로 부터 개발자의 부담을 덜수 있습니다

서버리스 파이어베이스

 

파이어 베이스 같은 경우는 복잡한 비즈니스 업무를 수행하기 힘들며,

서비스 비용도 규모가 커질 수록 지출비용은 늘어나게됩니다

다른 서버구축보다도 말이지요

 

 

하지만 소규모 프로젝트라면 부족함이 없다고 생각합니다

그럼 프로젝트를 생성해서 서버를 구축해볼까요??

 

구글 계정만있다면 

구글에서 파이어 베이스라고 검색해 쉽게

프로젝트를 만들어 서버를 구축할 수 있습니다

 

검색을 하면 

아래와 같이 홈페이지를 확인할 수 있습니다

 

 


파이어 베이스 프로젝트 생성하기

 

구글 파이어 베이스 프로젝트 생성 #1

 

 

시작하기를 클릭하시고 다음 화면으로 넘어갑시다!

 

 

구글 파이어 베이스 프로젝트 생성 #2

 

버튼을 클릭하고 다음 화면으로 갑시다

프로젝트 이름을 설정할 수 있을거예요!

 

구글 파이어 베이스 프로젝트 생성 #3

 

버튼을 클릭하고  다음으로 넘어가면 프로젝트에 대한 

Google 애널리틱스를 연동해서 관리할수 있는 선택창을 볼 수 있습니다

 

 

구글 파이어 베이스 프로젝트 생성 #4

 

다음 화면은 애널리틱스의 위치를 기입하면 프로젝트를 만들 수 있게됩니다

 

구글 파이어 베이스 프로젝트 생성 #5

 

그리고 다음은 시간이 몇분 지나면,

서버 프로젝트 관리 페이지로 이동하게됩니다

 

구글 파이어 베이스 프로젝트 생성 완료!

 


 

 

파이어 베이스를 앱에 연동하기

 

파이어 베이스를 연동하기 위해서는 IOS인지 안드로이드로 개발하는지에 따라

조금 다름니다

 

지금 리액트 네이티브 X 엑스포로 개발하는 중이기때문에

웹 SDK를 이용하면 쉽게 파이어 베이스 서버 구축이 가능합니다

 

 

파이어 베이스를 와 연동하기 #1

 

코드를 클릭하고 다음화면으로 가면

앱 닉네임을 기입하고

호스팅은 난중에 설정할 수 있으니 

지금은 넘어가도록 하겟습니다

 

파이어 베이스와 앱 연동하기 #2

 

앱을 등록하게 되면

우리가 사용할 코드 정보가 있습니다

그 정보를 우리 프로젝트에 js파일로 생성하여

코드를 삽입을 하여 연동에 필요한 정보를 사용해 봅시다!

 

파이어 베이스와 앱 연동하기 #3

 


 

파이어 베이스를 앱에 도구 설치 및 연동

 

Expo에서 파이어베이스를 사용할 수 있게

Expo의 firebase를 설치를 합니다

 

expo install firebase

 

 

파일 위치는 최상단에 생성하고 오른쪽과 같이 코드를 기입하면된다

파이어 베이스 연동관련 중요 키가 되는 부분은 플렛폼에서 복사해서 붙여넣기를 한다

 

 

파이어 베이와 앱 연동하기 #4

 

 

이때 중요한것은 databaseUrl이 설정이 안되어있습니다

그러므로 파이어 베이스 플렛폼의 리얼 타임 데이터 베이스에 들어가셔서

복사를 한다음 firebaseConfig안에 값을 지정해주시길 바랍니다

 

파이어 베이와 앱 연동하기 #5

 

 

 

이제 파이어 베이스와 앱 연동은 기본적인 설정은 끝이 났습니다

먼가 엄청 길게 적었지만 이미지가 거의 반이니 너무 길다고 포기하지마시고

끝까지 화이팅해요!

 

아직 모험은 끝나지 않았으니까요!

 

 

 

 

728x90
반응형

+ Recent posts

Powered by Tistory, Designed by wallel