Nuxt.js에서 Cloud Functions for Firebase onCall을 호출했습니다.
https.onRequest()
를 이용하고 있지만, https.onCall()
쪽이 빠른 것 같다.그래서 앱에서만 사용하는 함수를
https.onCall()
로 구현했을 때의 비망록.Nuxt.js에서 Cloud Functions for Firebase를 onCall을 통해 호출하는 예제.
onCall의 함수는 이런 느낌
msg
를 받고 msg
를 반환하는 echo 함수의 예.공식 문서에 대한 설명은 여기
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
exports.echo = functions.https.onCall(async (data, context) => {
// 引数の取得
const msg = data.msg;
// 認証情報の取得
const uid = !!context.auth ? context.auth.uid : "";
console.info(`uid=${uid}, msg=${msg}`);
// 返り値の返却
return { msg: msg }
});
context.auth
로 인증 정보를 얻을 수 있으므로,함수를 호출 할 수있는 사용자를 제한 할 수도 있습니다.
만든 onCall 함수를 앱에서 호출
이런 느낌.
이런 파일을 준비해 두고
await doEcho()
를 부르면,onCall을 통해 Functions의 함수를 호출할 수 있다.
import * as firebase from "firebase/app";
import "firebase/functions";
// firebaseの初期化。
if (!firebase.apps.length) {
const config = "...";
if (config) firebase.initializeApp(config);
}
// functionsのインスタンスを取得
const functions = firebase.functions();
export default async function doEcho(msg:string): Promise<string> {
// 作った関数のインスタンスを取得
const func = functions.httpsCallable("echo");
// 作った関数の実行
const res = await func({ msg: "なんかのメッセージ" });
// 返り値のmsgを取得&返却
return res.msg
}
로컬 PC에서 실행하기가 어렵습니다 ...
만든 함수를 개발중인 앱에서 실행할 때,
useFunctionsEmulator
를 사용하면 좋은 느낌.이렇게 하면 호출되는 함수의 로컬 PC로 변경할 수 있다.
// functionsのインスタンスを取得
const functions = firebase.functions();
if (process.env.NODE_ENV != "productions") {
functions.useFunctionsEmulator("http://localhost:5000");
}
이런 식으로,
useFunctionsEmulator
를 설정한 다음,firebase serve --only functions
에서 function 시작 nuxt
에서 Nuxt.js 앱 시작 그러면 Nuxt.js가 로컬에서 시작한 Functions를 참조하게 된다.
이것으로 개발할 때도 안심(´ω`)
결론
앱에서 사용하는 것만으로는 onCall이 빠르고 멋진 ( 'ω`)
적독 하우 매치은 Nuxt.js+Firebase에서 개발 중입니다!
만약 좋으면 놀아보세요 ヽ(=´▽`=)노
요청, 감상, 조언 등이 있다면,
공식 계정( @MemoryLoverz )과 개발자( @kira_puka )까지.
참고로 한 사이트
Reference
이 문제에 관하여(Nuxt.js에서 Cloud Functions for Firebase onCall을 호출했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kira_puka/items/f670ff349e89292e4024텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)