nuxt.js와 firebase 연동으로 간단한 앱 만들기
nuxt.js와 firebase 연동으로 간단한 앱 만들기
기사 내용
만드는 것
이번은 텍스트를 cloud firestore(데이터베이스)에 송신하는 것만의 간이적인 것을 만듭니다.
firebase 프로젝트 만들기
시작하려면 firebase Top에서 화면의 지시에 따라 프로젝트를 만듭니다.
그런 다음 아이콘을 클릭합니다.
html에 붙여 넣는 코드가 나오면 OK입니다.
Cloud firestore에 컬렉션 추가
이 시점에서 firestore에 컬렉션을 추가합니다.
firestore는 NoSQL이기 때문에 기존 SQL처럼 테이블이나 행이 존재하지 않습니다.
대신 컬렉션이라고 불리는 것에 데이터의 형태등을 정의해, 문서라고 불리는 것에 실제의 데이터를 넣어 갑니다.
firebase 콘솔 왼쪽 메뉴에서 firestore를 선택하고 컬렉션 추가에서 다음과 같이 컬렉션과 문서를 정의합니다.
nodejs에 firebase 설치
다음 명령을 실행합니다.
npm install --save firebase
package.json에 다음이 추가되었는지 확인하십시오.
아래는 내 환경입니다.
"dependencies": {
"core-js": "^3.6.5",
"firebase": "^8.1.1",
"nuxt": "^2.14.6"
},
플러그인에 firebase 구성 파일 배치
구글 선생님의 지시대로 그대로 배치해도 좋지만,
편리성 등을 생각해 플러그인으로서 배치해 봅시다.
plugins/firebase.js
import Vue from 'vue'
//Vye.prototypeを先頭につけることでどこからでも呼べるようにする
Vue.prototype.$firebaseConfig = {
apiKey: "XXX",
authDomain: "XXX",
databaseURL: "XXX",
projectId: "XXX",
storageBucket: "XXX",
messagingSenderId: "XXX",
appId: "XXX",
measurementId: "XXX"
};
nuxt.config.js
// Plugins to run before rendering page (https://go.nuxtjs.dev/config-plugins)
plugins: [
'@/plugins/firebase',
],
데이터베이스에 값 추가
그래서 구현해 봅시다.
디자인 프레임 워크에 vuetify를 사용합니다.
template는 사용하는 디자인 프레임워크에 맞게 변경하십시오.
제목, 본문, 날짜를 보내는 코드를 작성합니다.
vue
<template>
<div>
<v-app>
<v-container>
<v-row>
<v-text-field
label="タイトル"
counter="30"
hint="最大30文字"
color="blue-grey lighten-3"
maxlength="30"
v-model="title"
>
</v-text-field>
</v-row>
<v-row>
<v-textarea
label="本文"
counter="2000"
color="blue-grey lighten-2"
maxlength="2000"
v-model="text"
>
</v-textarea>
</v-row>
<v-row>
<v-col class="text-right">
<v-btn @click="postDiary"> 投稿 </v-btn>
</v-col>
</v-row>
</v-container>
</v-app>
</div>
</template>
vue
<script>
// import * as firebase from "firebase/app"; 公式クイックスタートの書き方だが何故かこっちは通らない
import firebase from "firebase/app";
import "firebase/auth";
import "firebase/firestore";
import "date-utils";
export default {
data: () => ({
title: "",
text: "",
}),
methods: {
postDiary() {
if (!firebase.apps.length) {
let firebaseApp = firebase.initializeApp(this.$firebaseConfig);
console.log(firebaseApp);
}
let time = new Date();
let db = firebase.firestore();
let docRef = db.collection('scrachPaper').doc();
let setScrachPaper = docRef.set({
title: this.title,
text: this.text,
time: time.toFormat("YYYY/MM/DD HH24:MI:SS"),
});
console.log(`${this.title}`);
console.log(`${this.text}`);
console.log(time.toFormat("YYYY/MM/DD HH24:MI:SS"));
//フォームを空にする
this.title = "";
this.text = "";
},
},
};
</script>
firebase의 초기화는 여기에서 좋은가라든가 더 컴포넌트 나누는 편이 좋지 않을까라든가
신경이 쓰이는 점은 있지만 간단하지만,
이제 일단 firestoret에 데이터를 전송할 수 있습니다.
오류가 발생하면 아래로.
FirebaseError: Missing or insufficient permissions
이 에러가 나왔다고 하는 것은, firebase측에서 데이터 기입의 허가가 되어 있지 않습니다.
firestore의 보안 규칙을 변경합시다.
다섯 번째 줄의 if 문 바로 다음 값을 false에서 true로 변경합니다.
배포
여기까지 왔으므로 일단 배포하고 사이트를 공개해 봅시다.
콘솔에서 다음을 수행합니다.
npm run generate # distフォルダに実行ファイルを生成
npm install -g firebase-tools #firebase CLIの導入
firebase init
다음과 같은 것이 나오므로 스페이스 키로 필요한 것을 선택.
이번에는 firestore와 Hosting을 선택합니다.
? Are you ready to proceed? Yes
? Which Firebase CLI features do you want to set up for this folder? Press Space to select features, then Enter to confirm your choices.
( ) Database: Deploy Firebase Realtime Database Rules
(*) Firestore: Deploy rules and create indexes for Firestore
( ) Functions: Configure and deploy Cloud Functions
>(*) Hosting: Configure and deploy Firebase Hosting sites
( ) Storage: Deploy Cloud Storage security rules
( ) Emulators: Set up local emulators for Firebase features
( ) Remote Config: Get, deploy, and rollback configurations for Remote Config
아래 질문에 dist를 입력하고 Enter를 누르십시오.
? What do you want to use as your public directory? dist
또, nuxt로 SPA(single page application)를 작성하고 있는 경우는 이하에서 Yes
? Configure as a single-page app (rewrite all urls to /index.html)? Yes
이쪽은 No로 해 주세요.
예인 경우 firebase 기본 페이지로 교체됩니다.
? File dist/index.html already exists. Overwrite? No
그 후에도 여러가지 물어볼 수 있습니다만, 기본적으로는 Enter로 해서 괜찮습니다.
다음 명령을 실행하여 배포합니다.
firebase deploy
그건 그렇고, 배포 취소는 다음 명령입니다.
firebase hosting:disable
만든 사이트
그런 느낌으로 상기의 내용에 투고한 내용을 플러스한 것이 이하가 됩니다.
문제가 일어나거나 불필요하게 되거나 삭제할지도 모릅니다만, 「이런 것 만들 수 있어」라고 하는 샘플에도.
참고 사이트
공식 퀵 스타트 firestore 사용법
htps : // 푹 빠져라. 오, ぇ. 코 m / 드 cs / 푹신 s 잡아 / 쿠이 cks rt? hl = 그럼 #과 p_ 오 f_ 파게
firestore의 보안 규칙 언어
htps : // 푹 빠져라. 오, ぇ. 코 m / 드 cs / 루 ぇ s / 루 ぇ s ぁんぐあげ? 아우테세 r=1
Reference
이 문제에 관하여(nuxt.js와 firebase 연동으로 간단한 앱 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/OrukRed/items/6023ff183aee9a2ffd0a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)