Firebase-tools: ๋งˆ์ง€๋ง‰ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋ฆฌ๊ฑฐ ๋งŒ ์œ ์ง€ํ•˜๋Š” ํ•จ์ˆ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ

์— ๋งŒ๋“  2019๋…„ 07์›” 18์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: firebase/firebase-tools

[ํ•„์ˆ˜] ํ™˜๊ฒฝ ์ •๋ณด


firebase-tools :
firebase : 7.1.1
๋…ธ๋“œ : v10.16.0
์ž๋ฐ” : 11.0.2


ํ”Œ๋žซํผ:
๋งฅ OS

[ํ•„์ˆ˜] ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค

์ด ์ค„์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. firebase-tools / functionsEmulator.ts at dad143c42445056014f6f48cc9dfa13156e3c186 ยท firebase / firebase-tools ยท GitHub
, ์ƒˆ ํŠธ๋ฆฌ๊ฑฐ ์ถ”๊ฐ€ ์š”์ฒญ์ด ๋ชฉ๋ก์— ์ถ”๊ฐ€๋˜์ง€ ์•Š๊ณ  ์ถ”๊ฐ€ ๋œ ์ด์ „ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

[ํ•„์ˆ˜] ์žฌํ˜„ ๋‹จ๊ณ„

curl ' http : // localhost : 9000 / .settings / functionTriggers.json? ns = test-project'-X PUT -H 'authorization : Bearer owner'--data-binary '[{ "name": "projects / test -project / locations / _ / functions / NewPost ","path ":"/ posts / {ownerId} / {postId} ","event ":"providers / google.firebase.database / eventTypes / ref.create "," topic ":"projects / test-project / topics / NewPost "}] '--compressed
{ "status": "ok"}

curl ' http : // localhost : 9000 / .settings / functionTriggers.json? ns = test-project'-H '๊ถŒํ•œ : ๋ฒ ์–ด๋Ÿฌ ์†Œ์œ ์ž'-์••์ถ•
[{ "name": "projects / test-project / locations / _ / functions / NewPost", "path": "/ posts / {ownerId} / {postId}", "event": "providers / google.firebase. database / eventTypes / ref.create ","topic ":"projects / test-project / topics / NewPost "}]

curl ' http : // localhost : 9000 / .settings / functionTriggers.json? ns = test-project'-X PUT -H 'authorization : Bearer owner'--data-binary '[{ "name": "projects / test -project / locations / _ / functions / UpdatePost ","path ":"/ posts / {ownerId} / {postId} ","event ":"providers / google.firebase.database / eventTypes / ref.update "," topic ":"projects / test-project / topics / UpdatePost "}] '--compressed
{ "status": "ok"}

curl ' http : // localhost : 9000 / .settings / functionTriggers.json? ns = test-project'-H '๊ถŒํ•œ : ๋ฒ ์–ด๋Ÿฌ ์†Œ์œ ์ž'-์••์ถ•
[{ "name": "projects / test-project / locations / _ / functions / UpdatePost", "path": "/ posts / {ownerId} / {postId}", "event": "providers / google.firebase. database / eventTypes / ref.update ","topic ":"projects / test-project / topics / UpdatePost "}]

[ํ•„์ˆ˜] ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘

๋‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—๋ฎฌ๋ ˆ์ดํ„ฐ์— ์ถ”๊ฐ€๋˜๊ณ  ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

[ํ•„์ˆ˜] ์‹ค์ œ ํ–‰๋™

๊ฐ ํ˜ธ์ถœ์ด ์ด์ „ ํ˜ธ์ถœ๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

emulator-suite database functions bug

๋ชจ๋“  6 ๋Œ“๊ธ€

@gpfunk ๋ณด๊ณ 

์ด๊ฒƒ์ด ๋ฒ„๊ทธ์ธ์ง€ ํ™•์ธํ•˜์—ฌ ์ด์ œ ๊ทธ๊ฒƒ์ด ์‚ฌ๋Š” ๊ณณ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

์‹ ์˜ ์†๋„ :)

Ok ์ด๊ฒƒ์€ "์˜๋„ ํ•œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ฒ„๊ทธ"์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ firebase-tools ์ฝ”๋“œ (์•Œ๋‹ค์‹œํ”ผ)๋Š” PUT ๋ฅผ ๊ฐ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ „์ฒด functionTriggers ๋ฆฌ์†Œ์Šค๋กœ ๋ณด๋‚ด๊ณ ์ด๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒƒ์€ ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฆ„์„ ๊ณ ์œ  ID๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœ ํ•  ์ˆ˜์žˆ๋Š” RTDB ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ๊ตฌํ˜„ ๋œ "upsert"์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Firestore๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ํ•ด๊ฒฐ์ฑ…์„ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

@IanWyszynski ๋Š” "upsert"์ž‘์—…์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰