Firebase Admin SDK āĻšāϞ āϏāĻžāϰā§āĻāĻžāϰ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāϰ āĻāĻāĻāĻŋ āϏā§āĻ āϝāĻž āĻāĻĒāύāĻžāĻā§ āĻŦāĻŋāĻļā§āώ āϏā§āĻŦāĻŋāϧāĻžāĻĒā§āϰāĻžāĻĒā§āϤ āĻĒāϰāĻŋāĻŦā§āĻļ āĻĨā§āĻā§ Firebase-āĻāϰ āϏāĻžāĻĨā§ āĻāύā§āĻāĻžāϰāĻ ā§āϝāĻžāĻā§āĻ āĻāϰāϤ⧠āĻĻā§āϝāĻŧ āϝā§āĻŽāύ āĻāĻāĻāĻŋ Firebase Data Connect āĻĒāϰāĻŋāώā§āĻŦāĻžāϝāĻŧ āĻŦāĻžāϞā§āĻ āĻĄā§āĻāĻž āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āĻāĻŦāĻ āĻāύā§āύāϤ āĻŦāĻŋāĻļā§āώāĻžāϧāĻŋāĻāĻžāϰ āĻāĻŦāĻ āĻāĻĻā§āĻŽāĻŦā§āĻļā§ āĻļāĻāϏāĻžāĻĒāϤā§āϰ āϏāĻš āĻ āύā§āϝāĻžāύā§āϝ āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒāĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦā§āϏ āĻĄā§āĻāĻž āĻāĻžāύā§āĻā§āĻ āĻĒāϰāĻŋāώā§āĻŦāĻžāϤ⧠āĻā§āϝāĻŧā§āϰāĻŋ āĻāĻŦāĻ āĻŽāĻŋāĻāĻā§āĻļāύāĻā§āϞāĻŋ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰāĻžāϰ āĻāύā§āϝāĨ¤
Admin SDK āĻāĻĒāύāĻžāĻā§ āϰāĻŋāĻĄ/āϰāĻžāĻāĻ āĻāĻŦāĻ āϰāĻŋāĻĄ-āĻāύāϞāĻŋ āĻŽā§āĻĄā§ āĻāϞ āĻ āĻĒāĻžāϰā§āĻļāύ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ API āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĒāĻ āύāϝā§āĻā§āϝ āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§, āĻāĻĒāύāĻŋ āĻĒā§āϰāĻļāĻžāϏāύāĻŋāĻ āĻĢāĻžāĻāĻļāύāĻā§āϞāĻŋ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύā§āϰ āĻŽāĻžāύāϏāĻŋāĻ āĻļāĻžāύā§āϤāĻŋ āĻĒāĻžāĻŦā§āύ āϝāĻž āĻāĻĒāύāĻžāϰ āĻĄā§āĻāĻžāĻŦā§āϏ⧠āĻĄā§āĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻžāĨ¤
āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ SDK āϏā§āĻāĻāĻĒ
āĻāĻĒāύāĻžāϰ āϏāĻžāϰā§āĻāĻžāϰ⧠Firebase Data Connect āĻāϰ āϏāĻžāĻĨā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻļā§āϰ⧠āĻāϰāϤā§, āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāĻĨāĻŽā§ Node.js āĻāϰ āĻāύā§āϝ Admin SDK āĻāύāϏā§āĻāϞ āĻāĻŦāĻ āϏā§āĻ āĻāĻĒ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻĒāύāĻžāϰ āϏā§āĻā§āϰāĻŋāĻĒā§āĻāĻā§āϞāĻŋāϤ⧠āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ SDK āĻļā§āϰ⧠āĻāϰā§āύ⧎
SDK āĻļā§āϰ⧠āĻāϰāϤā§, Data Connect āĻāĻā§āϏāĻā§āύāĻļāύāĻā§āϞāĻŋ āĻāĻŽāĻĻāĻžāύāĻŋ āĻāϰā§āύ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻāϞā§āĻĒ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻāĻāĻĄāĻŋ āĻāĻŦāĻ āĻ āĻŦāϏā§āĻĨāĻžāύ āĻā§āώāĻŖāĻž āĻāϰā§āύ⧎
import { initializeApp } from 'firebase-admin/app';
import { getDataConnect } from 'firebase-admin/data-connect';
// If you'd like to use OAuth2 flows and other credentials to log in,
// visit https://firebase.google.com/docs/admin/setup#initialize-sdk
// for alternative ways to initialize the SDK.
const app = initializeApp();
const dataConnect = getDataConnect({
serviceId: 'serviceId',
location: 'us-west2'
});
Admin SDK āϏāĻžāĻĨā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĄāĻŋāĻāĻžāĻāύā§āϰ āĻĒā§āϰāĻļā§āύ āĻāĻŦāĻ āĻŽāĻŋāĻāĻā§āĻļāύ
Admin SDK āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻŦāĻŋāĻŦā§āĻāύāĻžāϰ āĻāĻŋāϤā§āϤāĻŋāϤ⧠Data Connect āĻ āĻĒāĻžāϰā§āĻļāύ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻĒāϝā§āĻā§āĨ¤
SDK āĻāĻŦāĻ @auth(level: NO_ACCESS)
āĻ
āĻĒāĻžāϰā§āĻļāύ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āĻŦā§āĻā§āύ
āϝā§āĻšā§āϤ⧠Admin SDK āĻŦāĻŋāĻļā§āώāĻžāϧāĻŋāĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰā§, āϤāĻžāĻ NO_ACCESS
āϞā§āĻā§āϞ āϏāĻš @auth
āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏā§āĻ āĻāϰāĻž āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āϞā§āĻā§āϞ āύāĻŋāϰā§āĻŦāĻŋāĻļā§āώ⧠āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āϝā§āĻā§āύ⧠āĻĒā§āϰāĻļā§āύ āĻāĻŦāĻ āĻŽāĻŋāĻāĻā§āĻļāύ āĻāĻžāϞāĻžāϤ⧠āĻĒāĻžāϰā§āĨ¤
āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻ
āĻĒāĻžāϰā§āĻļāύā§āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ, āĻāĻĒāύāĻŋ āĻĒā§āϰāĻļāĻžāϏāύāĻŋāĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ āĻāĻŽāĻĻāĻžāύāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ .gql
āϏā§āϰā§āϏ āĻĢāĻžāĻāϞāĻā§āϞāĻŋāϤ⧠āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻļāĻžāϏāύāĻŋāĻ āĻĒā§āϰāĻļā§āύ āĻāĻŦāĻ āĻŽāĻŋāĻāĻā§āĻļāύāĻā§āϞāĻŋ āϏāĻāĻāĻ āĻŋāϤ āĻāϰā§āύ, āĻĢāĻžāϝāĻŧāĻžāϰāĻŦā§āϏ āϏā§āĻĒāĻžāϰāĻŋāĻļ āĻāϰ⧠āϝ⧠āĻāĻĒāύāĻŋ āĻĒā§āϰāĻļāĻžāϏāύāĻŋāĻ āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒāĻā§āϞāĻŋāĻā§ āĻā§āύāĻ āĻ
āύā§āĻŽā§āĻĻāύā§āϰ āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āϏā§āϤāϰ āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰā§āύ, āĻŦāĻž āϏāĻŽā§āĻāĻŦāϤ āĻāϰāĻ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ NO_ACCESS
āĻšāĻŋāϏāĻžāĻŦā§ āϏā§āĻ āĻāϰā§āύāĨ¤ āϝā§āĻāĻžāĻŦā§āĻ āĻšā§āĻ, āĻāĻāĻŋ āĻāĻ āϧāϰāύā§āϰ āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒāĻā§āϞāĻŋāĻā§ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻāĻĻā§āϰ āĻāĻžāĻ āĻĨā§āĻā§ āĻŦāĻž āĻ
āύā§āϝāĻžāύā§āϝ āĻ
-āϏā§āĻŦāĻŋāϧāĻžāĻĒā§āϰāĻžāĻĒā§āϤ āĻĒā§āϰā§āĻā§āώāĻžāĻĒāĻā§ āĻāĻžāϞāĻžāύ⧠āĻĨā§āĻā§ āĻŦāĻžāϧāĻž āĻĻā§āϝāĻŧāĨ¤
Data Connect āĻāĻŽā§āϞā§āĻāϰā§āϰ āϏāĻžāĻĨā§ SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ
āĻĒā§āϰā§āĻā§āĻāĻžāĻāĻĒ āĻāĻŦāĻ āĻĒāϰā§āĻā§āώāĻžāϰ āĻĒāϰāĻŋāĻŦā§āĻļā§, āĻāĻāĻŋ āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻĄā§āĻāĻžāϤ⧠āĻĄā§āĻāĻž āϏāĻŋāĻĄāĻŋāĻ āĻāĻŦāĻ āĻ āύā§āϝāĻžāύā§āϝ āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰāϤ⧠āĻāĻžāϰā§āϝāĻāϰ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ Admin SDK āĻāĻĒāύāĻžāĻā§ āĻāĻĒāύāĻžāϰ āĻāϰā§āĻŽāĻĒā§āϰāĻŦāĻžāĻšāĻā§ āϏāĻšāĻ āĻāϰāϤ⧠āĻĻā§āϝāĻŧ āĻāĻžāϰāĻŖ āĻāĻāĻŋ āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻĒā§āϰāĻŦāĻžāĻšā§āϰ āĻāύā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāĻŦāĻ āĻ āύā§āĻŽā§āĻĻāύāĻā§ āĻāĻĒā§āĻā§āώāĻž āĻāϰā§āĨ¤
āϝāĻāύ DATA_CONNECT_EMULATOR_HOST
āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āϏā§āĻ āĻāϰāĻž āĻĨāĻžāĻā§ āϤāĻāύ Firebase āĻ
ā§āϝāĻžāĻĄāĻŽāĻŋāύ SDKāĻā§āϞāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ Data Connect āĻāĻŽā§āϞā§āĻāϰā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻā§āϤ āĻšāϝāĻŧ:
export DATA_CONNECT_EMULATOR_HOST="127.0.0.1:9399"
āĻāϰāĻ āϤāĻĨā§āϝā§āϰ āĻāύā§āϝ, āĻĻā§āĻā§āύ:
- āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻāύā§āύāϝāĻŧāύ⧠āĻĄā§āĻāĻž āϏāĻŋāĻĄāĻŋāĻāϝāĻŧā§āϰ āĻāύā§āϝ āĻāĻžāĻāĻĄ
- Data Connect āĻāĻŽā§āϞā§āĻāϰ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĨ¤
āϏāĻžāϧāĻžāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰā§āύ
Admin SDK āĻāĻĒāύāĻžāϰ āϏāĻŽāĻžāϞā§āĻāύāĻžāĻŽā§āϞāĻ āĻĄā§āĻāĻžāϤ⧠āĻŦāĻŋāĻļā§āώ āϏā§āĻŦāĻŋāϧāĻžāĻĒā§āϰāĻžāĻĒā§āϤ āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒāĻā§āϞāĻŋāϰ āĻāύā§āϝ āϏāϰāĻŦāϰāĻžāĻš āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ SDK āĻĻā§āĻāĻŋ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§:
- āĻŦā§āĻļāĻŋāϰāĻāĻžāĻ āϰāĻŋāĻĄ-āϰāĻžāĻāĻ āĻŦāĻž āϰāĻŋāĻĄ-āĻ
āύāϞāĻŋ āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻāύā§āĻāĻžāϰāĻĢā§āϏ, āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻžāϰ āĻā§āĻĄ āĻĒā§āϰāĻļā§āύ āĻāĻŦāĻ āĻŽāĻŋāĻāĻā§āĻļāύ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰ⧠āĻāĻŦāĻ āϏā§āĻā§āϞāĻŋāĻā§ āϰāĻŋāĻĄ-āϰāĻžāĻāĻ
executeGraphql
āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠āĻŦāĻž āĻļā§āϧā§āĻŽāĻžāϤā§āϰ-āĻĒāĻ āύāϝā§āĻā§āϝexecuteGraphqlRead
āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠āĻĒā§āϰā§āϰāĻŖ āĻāϰā§āĨ¤ - āĻŦāĻžāϞā§āĻ āĻĄā§āĻāĻž āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āώ āĻāύā§āĻāĻžāϰāĻĢā§āϏ, āϝāĻž āĻā§āύā§āϰāĻŋāĻ
executeGraphql
āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤā§, āĻŽāĻŋāĻāĻā§āĻļāύ āĻ āĻĒāĻžāϰā§āĻļāύāĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻāϤā§āϏāϰā§āĻā§āĻā§āϤ āĻĒāĻĻā§āϧāϤāĻŋāĻā§āϞāĻŋāĻā§ āĻĒā§āϰāĻāĻžāĻļ āĻāϰā§:insert
,insertMany
,upsert
, āĻāĻŦāĻupsertMany
āĨ¤
executeGraphql
āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĄā§āĻāĻž āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āύ
Admin SDK āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĄā§āĻāĻž āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻž āĻšāϝāĻŧāĨ¤
āĻĒā§āϰāĻļāĻžāϏāύāĻŋāĻ āĻļāĻāϏāĻžāĻĒāϤā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ
āĻĒā§āϰāĻļāĻžāϏāύāĻŋāĻ āĻļāĻāϏāĻžāĻĒāϤā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĄā§āĻāĻž āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻž āϏāĻŦāĻā§āϝāĻŧā§ āϏāĻšāĻ āĻĒāĻĻā§āϧāϤāĻŋāĨ¤
// User can be publicly accessible, or restricted to admins
const query = "query getProfile(id: AuthID) { user(id: $id) { id name } }";
interface UserData {
user: {
id: string;
name: string;
};
}
export interface UserVariables {
id: string;
}
const options:GraphqlOptions<UserVariables> = { variables: { id: "QVBJcy5ndXJ1" } };
// executeGraphql
const gqlResponse = await dataConnect.executeGraphql<UserData, UserVariables>(query, options);
// executeGraphqlRead (similar to previous sample but only for read operations)
const gqlResponse = await dataConnect.executeGraphqlRead<UserData, UserVariables>(query, options);
// gqlResponse -> { "data": { "user": { "id": "QVBJcy5ndXJ1", "name": "Fred" } } }
āĻāĻĻā§āĻŽāĻŦā§āĻļā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻļāĻāϏāĻžāĻĒāϤā§āϰ
āĻāĻŽāύ āĻāĻŋāĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ āϰāϝāĻŧā§āĻā§ āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āϏā§āĻā§āϰāĻŋāĻĒā§āĻāĻā§āϞāĻŋāĻā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĒāĻā§āώ⧠āϏā§āĻŽāĻŋāϤ āĻļāĻāϏāĻžāĻĒāϤā§āϰā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĄā§āĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻāĻžāύ⧎ āĻāĻ āĻĒāĻĻā§āϧāϤāĻŋāĻāĻŋ āϏāϰā§āĻŦāύāĻŋāĻŽā§āύ āĻŦāĻŋāĻļā§āώāĻžāϧāĻŋāĻāĻžāϰā§āϰ āύā§āϤāĻŋāĻā§ āϏāĻŽā§āĻŽāĻžāύ āĻāϰā§āĨ¤
āĻāĻ āĻāύā§āĻāĻžāϰāĻĢā§āϏāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤā§, āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻāĻĄ JWT āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻā§āĻā§āύ āĻĨā§āĻā§ āϤāĻĨā§āϝ āϏāĻāĻā§āϰāĻš āĻāϰā§āύ āϝāĻž Authentication āĻā§āĻā§āύ āĻĢāϰā§āĻŽā§āϝāĻžāĻ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻžāϏā§āĻāĻŽ āĻā§āĻā§āύ āĻāĻžāĻāĻĄ āĻĻā§āĻā§āύāĨ¤
// Get the current user's data
const queryGetUserImpersonation = `
query getUser @auth(level: USER) {
user(key: {uid_expr: "auth.uid"}) {
id,
name
}
}`;
// Impersonate a user with the specified auth claims
const optionsAuthenticated: GraphqlOptions<undefined> = {
impersonate: {
authClaims: {
sub: 'QVBJcy5ndXJ1'
}
}
};
// executeGraphql with impersonated authenticated user scope
const gqlResponse = await dataConnect.executeGraphql<UserData, undefined>(queryGetUserImpersonation, optionsAuthenticated);
// gqlResponse -> { "data": { "user": { "id": "QVBJcy5ndXJ1", "name": "Fred" } } }
executeGraphql
āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒāĻžāĻŦāϞāĻŋāĻ āĻĄā§āĻāĻž āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āύ
āĻāĻĒāύāĻŋ SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏāϰā§āĻŦāĻāύā§āύāĻāĻžāĻŦā§ āĻ ā§āϝāĻžāĻā§āϏā§āϏāϝā§āĻā§āϝ āĻĄā§āĻāĻž āύāĻŋāϝāĻŧā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āĻāĻāĻāĻŋ āĻ āύāύā§āĻŽā§āĻĻāĻŋāϤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻĻā§āĻŽāĻŦā§āĻļ āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎
// Query to get posts, with authentication level PUBLIC
const queryGetPostsImpersonation = `
query getPosts @auth(level: PUBLIC) {
posts {
description
}
}`;
// Attempt to access data as an unauthenticated user
const optionsUnauthenticated: GraphqlOptions<undefined> = {
impersonate: {
unauthenticated: true
}
};
// executeGraphql with impersonated unauthenticated user scope
const gqlResponse = await dataConnect.executeGraphql<UserData, undefined>(queryGetPostsImpersonation, optionsUnauthenticated);
āĻŦāĻžāϞā§āĻ āĻĄā§āĻāĻž āĻ āĻĒāĻžāϰā§āĻļāύ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰā§āύ
āĻĢāĻžāϝāĻŧāĻžāϰāĻŦā§āϏ āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻŦāĻžāϞā§āĻ āĻĄā§āĻāĻž āĻ āĻĒāĻžāϰā§āĻļāύā§āϰ āĻāύā§āϝ Admin SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻĻā§āϝāĻŧāĨ¤
SDK āĻŦāĻžāϞā§āĻ āĻĄā§āĻāĻž āύāĻŋāϝāĻŧā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻĒāĻĻā§āϧāϤāĻŋāĻā§āϞāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§ā§ˇ āĻĒā§āϰāĻĻāϤā§āϤ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āĻĨā§āĻā§, āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āĻāĻāĻāĻŋ GraphQL āĻŽāĻŋāĻāĻā§āĻļāύ āϤā§āϰāĻŋ āĻāϰ⧠āĻāĻŦāĻ āĻāĻžāϞāĻžāϝāĻŧāĨ¤
// Methods of the bulk operations API
// dc is a Data Connect admin instance from getDataConnect
const resp = await dc.insert("movie" /*table name*/, data[0]);
const resp = await dc.insertMany("movie" /*table name*/, data);
const resp = await dc.upsert("movie" /*table name*/, data[0]);
const resp = await dc.upsertMany("movie" /*table name*/, data);
āĻŦāĻžāϞā§āĻ āĻ āĻĒāĻžāϰā§āĻļāύ āĻāύā§āϝ āĻāϰā§āĻŽāĻā§āώāĻŽāϤāĻž āύā§āĻ
āĻŦā§āϝāĻžāĻāĻāύā§āĻĄā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻ āύā§āϰā§āϧ āĻā§āϞāĻžāĻāĻĄ āĻāϏāĻāĻŋāĻāĻāϞ-āĻ āĻāĻ āϰāĻžāĻāύā§āĻĄ āĻā§āϰāĻŋāĻĒ āĻāϰāĻŦā§, āϤāĻžāĻ āĻāĻĒāύāĻŋ āϝāϤ āĻŦā§āĻļāĻŋ āĻŦā§āϝāĻžāĻ āĻāϰāĻŦā§āύ, āĻĨā§āϰā§āĻĒā§āĻ āϤāϤ āĻŦā§āĻļāĻŋ āĻšāĻŦā§āĨ¤
āϝāĻžāĻāĻšā§āĻ, āĻŦā§āϝāĻžāĻā§āϰ āĻāĻāĻžāϰ āϝāϤ āĻŦāĻĄāĻŧ āĻšāĻŦā§, āĻā§āύāĻžāϰā§āĻ āĻāϰāĻž SQL āϏā§āĻā§āĻāĻŽā§āύā§āĻ āϤāϤ āĻŦā§āĻļāĻŋ āĻšāĻŦā§āĨ¤ āĻĒā§āϏā§āĻāĻā§āϰā§āĻāϏāĻāĻŋāĻāĻāϞ āĻāϏāĻāĻŋāĻāĻāϞ āϏā§āĻā§āĻāĻŽā§āύā§āĻā§āϰ āĻĻā§āϰā§āĻā§āϝ āϏā§āĻŽāĻž āĻĒā§āĻāĻā§ āĻā§āϞā§, āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āϤā§āϰā§āĻāĻŋāϰ āϏāĻŽā§āĻŽā§āĻā§āύ āĻšāĻŦā§āύāĨ¤
āĻ āύā§āĻļā§āϞāύā§, āĻāĻĒāύāĻžāϰ āĻāĻžāĻā§āϰ āĻāĻžāĻĒā§āϰ āĻāύā§āϝ āĻāĻĒāϝā§āĻā§āϤ āĻŦā§āϝāĻžāĻā§āϰ āĻāĻāĻžāϰ āĻā§āĻāĻā§ āĻĒā§āϤ⧠āĻĒāϰā§āĻā§āώāĻž āĻāϰā§āύāĨ¤
āĻāϰāĻĒāϰ āĻāĻŋ?
- Admin SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĄā§āĻāĻž āϏāĻš āĻāĻĒāύāĻžāϰ āĻĄāĻžāĻāĻžāĻŦā§āϏ āϏāĻŋāĻĄāĻŋāĻ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻžāύā§āύ
- Admin SDK āĻāύā§āϝ API āĻĒāϰā§āϝāĻžāϞā§āĻāύāĻž āĻāϰā§āύāĨ¤
- āĻ āύā§āϝāĻžāύā§āϝ āĻĒā§āϰāĻā§āĻā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āĻ āĻĒāĻžāϰā§āĻļāύā§āϰ āĻāύā§āϝ Firebase CLI āĻāĻŦāĻ Google Cloud āĻāύāϏā§āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āϝā§āĻŽāύ āϏā§āĻāĻŋāĻŽāĻž āĻāĻŦāĻ āϏāĻāϝā§āĻāĻāĻžāϰā§āĻā§āϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻž āĻāĻŦāĻ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻāĻŦāĻ āĻĄā§āĻāĻžāĻŦā§āϏāĻā§āϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻž āĨ¤