Firebase ๋๊ตฌ: 7.30
ํ๋ซํผ: macOS 10.14.6
๋ด ๋ชฉํ๋ ๋ธ๋ผ์ฐ์ ์์ ๋ก์ปฌ๋ก ์๋ํ๋ ์ธ์ฆ๋ Firestore ์๋ฎฌ๋ ์ดํฐ ์์ฒญ์ ์ป๋ ๊ฒ์
๋๋ค. ํน์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ก์ปฌ ํ
์คํธ์ฉ์
๋๋ค. ์ด ์ฌ๋ก๋ฅผ ํ
์คํธํ๊ธฐ ์ํด https://github.com/firebase/firebase-tools/issues/์ ์ค๋ช
๋ ๋๋ก firebase/quickstart-nodejs ์ ์ฅ์๋ฅผ ๋ณต์ ํ๊ณ firestore-emulator/browser-quickstart
์ํ์ ๊ฐ๋จํ ๋ชจ์ ์ธ์ฆ ํ ํฐ์ ์ถ๊ฐํ์ต๋๋ค. 1001#์ด์๋๊ธ -523319483.
๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ต์ ํ ์คํธ ์ฌ๋ก๋
firestore-emulator/browser-quickstart ์ํ์ ์ ์์ ์ผ๋ก ์คํํฉ๋๋ค.
์ํ ํ๋ก์ ํธ๋ ์ ์์ ์ผ๋ก ์๋ํด์ผ ํฉ๋๋ค(์: ์ฌ์ฉ์๊ฐ ํ ์คํธ ์์ญ์ ํ ์คํธ๋ฅผ ์ ๋ ฅํ๊ณ ๋ก์ปฌ Firestore ์๋ฎฌ๋ ์ดํฐ์ ์ ์ฅํ ๋ค์ ํ ์คํธ ์์ญ ์์ ์ฑ๊ณต์ ์ผ๋ก ํ์๋ ํ ์คํธ๋ฅผ ๋ณผ ์ ์์).
์ํ ํ๋ก์ ํธ๋ฅผ ์คํํ ๋ ํ์ด์ง๋ฅผ ๋ก๋ํ ๋( Uncaught Error in onSnapshot: FirebaseError:
) ํ
์คํธ๋ฅผ ๊ฒ์ํ๋ ค๊ณ ํ ๋( Uncaught (in promise) FirebaseError: PERMISSION_DENIED:
) ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ ์ฝ์์ ์ฌ๋ฌ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.
์ค์ ๋ก ์ด ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น ํ๋ ๋ฐ ์๊ฐ์ ๋ณด๋๊ณ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌ ํ๋ค๊ณ ์๊ฐ ํฉ๋๋ค. Firestore ์๋ฎฌ๋ ์ดํฐ ์ ์์ค๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง ์ด ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ํจ์น๋ฅผ ๋ง๋ค์์ต๋๋ค. / ์ธ์ฆ๋ ์์ฒญ์ด ์์๋๋ก ์๋ํ๋๋ก ํ์ฉํฉ๋๋ค.
--- com/google/cloud/datastore/emulator/firestore/webchannel/FirestoreV1WebChannelAdapter.java 2019-08-28 00:42:06.000000000 -0400
+++ FirestoreV1WebChannelAdapter.java 2019-08-27 23:34:54.000000000 -0400
@@ -190,7 +190,17 @@
String url = channel.getHandshakeHeaders().getUrl();
QueryStringDecoder decoder = new QueryStringDecoder(url);
String db = (String)((List)Preconditions.checkNotNull((List)decoder.parameters().get("database"), "expected %s to have a 'database' query parameter", (Object)url)).get(0);
- Context.current().withValue(FirestoreEmulatorMetadataKeys.DATABASE_REF.contextKey(), db).run(() -> {
+ String auth = null;
+ if (decoder.parameters().get("$httpHeaders") != null) {
+ for (String rawHeader : decoder.parameters().get("$httpHeaders").get(0).split("\r\n")) {
+ if (rawHeader.startsWith("Authorization:")) {
+ auth = rawHeader.substring(14).trim();
+ break;
+ }
+ }
+ }
+ Context.current().withValue(FirestoreEmulatorMetadataKeys.AUTHORIZATION.contextKey(), auth).withValue(
+ FirestoreEmulatorMetadataKeys.DATABASE_REF.contextKey(), db).run(() -> {
Object handler;
if (url.startsWith("/google.firestore.v1.Firestore/Write/")) {
handler = new FirestoreV1WebChannelAdapter.FirestoreWriteHandler(this.router, channel);
@jkeys089 ๋น์คํ ์์ค ์๋ฎฌ๋ ์ดํฐ์ ํจ์น๋ฅผ ์ ๊ณตํ์ฌ ์ธํฐ๋ท ํฌ์ธํธ 100์ ์ ๋๋ฆฝ๋๋ค! ์ด ์ฌ์ค์ ๋ช ํํ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
@ryanpbrewster ๋๋ @IanWyszynski ์ด๋ป๊ฒ ์๊ฐํ์ธ์?
์ธ์์ ์ธ ์ํ :)
๊ฐ์น๊ฐ ์๋ ๊ฒ์ ์ด ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ค์ ๋ก ์ถ๊ฐ๋ ์ฝ๋์ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. Firestore ์๋ฎฌ๋ ์ดํฐ์ v1.8.1( firebase-tools
ํจํค์ง์ v7.3.0๊ณผ ํจ๊ป ์ ๊ณต๋จ)์ผ๋ก ์
๊ทธ๋ ์ด๋ํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ์์ ๋์ด์ผ ํฉ๋๋ค.
๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ๋ค์ ์ฌ์ญ์์ค. ์ ๊ณ ํด ์ฃผ์ ์ ๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! :์์์ด ๋์น๋:
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@jkeys089 ๋น์คํ ์์ค ์๋ฎฌ๋ ์ดํฐ์ ํจ์น๋ฅผ ์ ๊ณตํ์ฌ ์ธํฐ๋ท ํฌ์ธํธ 100์ ์ ๋๋ฆฝ๋๋ค! ์ด ์ฌ์ค์ ๋ช ํํ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
@ryanpbrewster ๋๋ @IanWyszynski ์ด๋ป๊ฒ ์๊ฐํ์ธ์?