Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从不同设备连接到firestore上的同一文档?_Javascript_Java_Google Cloud Firestore_Google Cloud Functions - Fatal编程技术网

Javascript 如何从不同设备连接到firestore上的同一文档?

Javascript 如何从不同设备连接到firestore上的同一文档?,javascript,java,google-cloud-firestore,google-cloud-functions,Javascript,Java,Google Cloud Firestore,Google Cloud Functions,我有以下职能: const functions = require("firebase-functions"); const admin = require("firebase-admin"); admin.initializeApp(); const Firestore = require('@google-cloud/firestore'); const db = admin.firestore(); exports.createCollectionByPlayerID = functi

我有以下职能:

const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
const Firestore = require('@google-cloud/firestore');
const db = admin.firestore();

exports.createCollectionByPlayerID = 
functions.https.onCall((data,context) => {
    const citiesRef = db.collection(context.auth.uid);
    let setSf = citiesRef.doc('1SF').set({
        name: 'San Francisco',
        state: 'CA',
        country: 'USA',
        capital: false,
        population: 260
    });
    return "testID"
});
我希望这个函数为每个玩家创建单独的集合(或文档),以玩家ID命名。 当我从一个设备调用此函数时,该函数将使用一个名称创建新集合:

当我从另一个设备调用同一个函数时,该函数将创建另一个具有另一个名称的集合

我需要从不同的设备连接到一个由一个玩家创建的集合,而无需创建新集合

我的java代码:

private void hw_fromFunction() {
    FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
    mUser.getIdToken(true)
        .addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
            public void onComplete(@NonNull Task<GetTokenResult> task) {
 if (task.isSuccessful()) {
       String idToken = task.getResult().getToken();

    helloWorldFromFunc(idToken).addOnCompleteListener(new 
    OnCompleteListener<String>() {
        @Override public void onComplete(@NonNull Task<String> task) {}
     });
  } else {}
       }
              });
}

private Task<String> helloWorldFromFunc(String idToken) {
    Map<String, Object> data = new HashMap<>();
    data.put("push", true);
    return mFunctions
            .getHttpsCallable("createCollectionByPlayerID")
            .call(idToken)
            .continueWith(new Continuation<HttpsCallableResult, String>() 
{
                @Override
                public String then(@NonNull Task<HttpsCallableResult> 
task) throws Exception {
                    return (String) task.getResult().getData();
                }
            });
}
//>>>>>>>>>>>>>>>>*****auth***********
GoogleSignInOptions gso = new 
    GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
         .requestIdToken(getString(R.string.default_web_client_id))
//.requestEmail()
         .build();

    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

    mAuth = FirebaseAuth.getInstance();

private void signIn() {Intent signInIntent 
    = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);

    startActivityForResult(signInIntent, RC_SIGN_IN);
}

private void signOut() {
    mGoogleSignInClient.signOut().addOnCompleteListener(this
            , new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    updateUI(false);
                }
            });
}

private void revokeAccess() {
    mAuth.signOut();
    mGoogleSignInClient.revokeAccess().addOnCompleteListener(this
            , new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    updateUI(false);
                }
            });
}
}

和日志:(为这么多的文字感到抱歉)

2019-07-05 10:04:21.134 8802-8844/com.admiral_odessa.firebaseAmiral1 V/FA:连接到远程服务
2019-07-05 10:04:21.169 8802-8844/com.adminal_odessa.firebaseAdminarl1 V/FA:连接尝试已在进行中
2019-07-05 10:04:21.281 8802-8802/com.adminal_odessa.firebaseAdminarl1 W/zyote:由于未识别的类加载器,跳过重复类检查
2019-07-05 10:04:21.283 8802-8802/com.admiral_odessa.firebaseadmirl1 I/DynamiteModule:考虑本地模块com.google.android.gms.signinbutton_dynamite:0和远程模块com.google.android.gms.signinbutton_dynamite:2
2019-07-05 10:04:21.283 8802-8802/com.adminal_odessa.firebaseadminamer1 I/DynamiteModule:com.google.android.gms.signinbutton_dynamite的选定远程版本,版本>=2
2019-07-05 10:04:21.336 8802-8802/com.adminal_odessa.firebaseAdminarl1 W/zyote:由于未识别的类加载器,跳过重复类检查
2019-07-05 10:04:21.338 8802-8846/com.adminal_odessa.firebaseadminarl1 D/NetworkSecurityConfig:未指定网络安全配置,使用平台默认设置
2019-07-05 10:04:21.343 8802-8846/com.adminal_odessa.firebaseAdminarl1 I/ProviderInstaller:安装的默认安全提供程序GmsCore_OpenSSL
2019-07-05 10:04:21.420 8802-8807/com.admiral_odessa.firebaseAmiral1 I/zyote:执行部分代码缓存收集,代码=30KB,数据=28KB
2019-07-05 10:04:21.478 8802-8807/com.admiral_odessa.firebaseAmiral1 I/zyote:在代码缓存收集后,代码=28KB,数据=28KB
2019-07-05 10:04:21.478 8802-8807/com.admiral_odessa.firebaseAmiral1 I/zyote:将代码缓存容量增加到128KB
2019-07-05 10:04:21.482 8802-8813/com.adminal_odessa.firebaseAdminarl1 I/zyote:后台并发复制GC释放11835(1178KB)个AllocSpace对象,1(20KB)个LOS对象,49%空闲,1681KB/3MB,暂停781U总计110.398ms
2019-07-05 10:04:21.532 8802-8802/com.adminal_odessa.firebaseAdminarl1 D/AutoManageHelper:为客户端0启动自动管理假空
2019-07-05 10:04:21.545 8802-8802/com.adminal_odessa.firebaseadminarl1 D/AutoManageHelper:onStart true{0=com.google.android.gms.common.api.internal.zaj$zaa@d0b2a33}
2019-07-05 10:04:21.632 8802-8844/com.adminal_odessa.firebaseAdminarl1 I/FA:找不到标签管理器,因此不会使用
2019-07-05 10:04:21.643 8802-8849/com.adminal_odessa.firebaseadminarl1 D/OpenGLRenderer:HWUI-GL管道
2019-07-05 10:04:21.692 8802-8851/com.adminal_odessa.firebaseAdminarl1 W/动态模块:未找到providerinstaller的本地模块描述符类。
2019-07-05 10:04:21.708 8802-8844/com.admiral_odessa.firebaseadmirl1 D/FA:日志事件(FE):屏幕视图(vs),捆绑[{firebase_事件(o)=自动,firebase_屏幕(sc)=主活动,firebase_屏幕(si)=3100986043932118}]
2019-07-05 10:04:21.716 8802-8851/com.adminal_odessa.firebaseAdminarl1 I/动态模块:考虑本地模块提供程序安装程序:0和远程模块提供程序安装程序:0
2019-07-05 10:04:21.716 8802-8851/com.adminal_odessa.firebaseAdminarl1 W/ProviderInstaller:未能加载ProviderInstaller模块:未找到可接受的模块。本地版本为0,远程版本为0。
2019-07-05 10:04:21.755 8802-8849/com.adminal_odessa.firebaseAdminarl1 I/OpenGLRenderer:初始化EGL,版本1.4
2019-07-05 10:04:21.755 8802-8849/com.adminal_odessa.firebaseAdminarl1 D/OpenGLRenderer:交换行为1
2019-07-05 10:04:21.756 8802-8849/com.adminal_odessa.firebaseAdminarl1 W/OpenGLRenderer:未能选择保留EGL_交换行为的配置,正在重试,没有。。。
2019-07-05 10:04:21.756 8802-8849/com.adminal_odessa.firebaseAdminarl1 D/OpenGLRenderer:交换行为0
2019-07-05 10:04:21.777 8802-8849/com.admiral_odessa.firebaseadmiral1 D/EGL_仿真:eglCreateContext:0xa0e9a580:maj 2 min 0 rcv 2
2019-07-05 10:04:21.832 8802-8849/com.admiral_odessa.firebaseadmiral1 D/EGL_仿真:eglMakeCurrent:0xa0e9a580:ver 2 0(tinfo 0xaccfb330)
2019-07-05 10:04:21.861 8802-8807/com.admiral_odessa.firebaseAmiral1 I/zyote:执行部分代码缓存收集,代码=33KB,数据=53KB
2019-07-05 10:04:21.886 8802-8807/com.admiral_odessa.firebaseAmiral1 I/zyote:在代码缓存收集后,代码=33KB,数据=53KB
2019-07-05 10:04:21.886 8802-8807/com.admiral_odessa.firebaseAmiral1 I/zyote:将代码缓存容量增加到256KB
2019-07-05 10:04:21.891 8802-8807/com.adminal_odessa.firebaseAdminaril1 I/zyote:JIT为void.widget.TextView的编译代码分配了71KB。(android.content.Context,android.util.AttributeSet,int,int)
2019-07-05 10:04:21.891 8802-8807/com.adminal_odessa.firebaseAdminarl1 I/zyote:编译器分配了4MB来编译void android.widget.TextView。(android.content.Context,android.util.AttributeSet,int,int)
2019-07-05 10:04:21.915 8802-8844/com.admiral_odessa.firebaseadmiral1 V/FA:连接尝试已在进行中
2019-07-05 10:04:21.916 8802-8844/com.admiral_odessa.firebaseadmiral1 V/FA:连接尝试已在进行中
2019-07-05 10:04:21.928 8802-8844/com.adminal_odessa.firebaseadminaral1 V/FA:活动恢复,时间:32836187
2019-07-05 10:04:22.022 8802-8849/com.admiral_odessa.firebaseadmiral1 D/EGL_仿真:eglMakeCurrent:0xa0e9a580:ver 2 0(tinfo 0xaccfb330)
2019-07-05 10:04:22.052 8802-8807/com.admiral_odessa.firebaseAmiral1 I/zyote:执行完整代码缓存收集,代码=125KB,数据=66KB
2019-07-05 10:04:22.052 8802-8807/com.admiral_odessa.firebase
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow create: if request.auth != null && request.auth.uid == uid;
    }
  }
2019-07-05 10:04:21.134 8802-8844/com.admiral_odessa.firebaseadmiral1 V/FA: Connecting to remote service
2019-07-05 10:04:21.169 8802-8844/com.admiral_odessa.firebaseadmiral1 V/FA: Connection attempt already in progress
2019-07-05 10:04:21.281 8802-8802/com.admiral_odessa.firebaseadmiral1 W/zygote: Skipping duplicate class check due to unrecognized classloader
2019-07-05 10:04:21.283 8802-8802/com.admiral_odessa.firebaseadmiral1 I/DynamiteModule: Considering local module com.google.android.gms.signinbutton_dynamite:0 and remote module com.google.android.gms.signinbutton_dynamite:2
2019-07-05 10:04:21.283 8802-8802/com.admiral_odessa.firebaseadmiral1 I/DynamiteModule: Selected remote version of com.google.android.gms.signinbutton_dynamite, version >= 2
2019-07-05 10:04:21.336 8802-8802/com.admiral_odessa.firebaseadmiral1 W/zygote: Skipping duplicate class check due to unrecognized classloader
2019-07-05 10:04:21.338 8802-8846/com.admiral_odessa.firebaseadmiral1 D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2019-07-05 10:04:21.343 8802-8846/com.admiral_odessa.firebaseadmiral1 I/ProviderInstaller: Installed default security provider GmsCore_OpenSSL
2019-07-05 10:04:21.420 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: Do partial code cache collection, code=30KB, data=28KB
2019-07-05 10:04:21.478 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: After code cache collection, code=28KB, data=28KB
2019-07-05 10:04:21.478 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: Increasing code cache capacity to 128KB
2019-07-05 10:04:21.482 8802-8813/com.admiral_odessa.firebaseadmiral1 I/zygote: Background concurrent copying GC freed 11835(1178KB) AllocSpace objects, 1(20KB) LOS objects, 49% free, 1681KB/3MB, paused 781us total 110.398ms
2019-07-05 10:04:21.532 8802-8802/com.admiral_odessa.firebaseadmiral1 D/AutoManageHelper: starting AutoManage for client 0 false null
2019-07-05 10:04:21.545 8802-8802/com.admiral_odessa.firebaseadmiral1 D/AutoManageHelper: onStart true {0=com.google.android.gms.common.api.internal.zaj$zaa@d0b2a33}
2019-07-05 10:04:21.632 8802-8844/com.admiral_odessa.firebaseadmiral1 I/FA: Tag Manager is not found and thus will not be used
2019-07-05 10:04:21.643 8802-8849/com.admiral_odessa.firebaseadmiral1 D/OpenGLRenderer: HWUI GL Pipeline
2019-07-05 10:04:21.692 8802-8851/com.admiral_odessa.firebaseadmiral1 W/DynamiteModule: Local module descriptor class for providerinstaller not found.
2019-07-05 10:04:21.708 8802-8844/com.admiral_odessa.firebaseadmiral1 D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_screen_class(_sc)=MainActivity, firebase_screen_id(_si)=3100986043983932118}]
2019-07-05 10:04:21.716 8802-8851/com.admiral_odessa.firebaseadmiral1 I/DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
2019-07-05 10:04:21.716 8802-8851/com.admiral_odessa.firebaseadmiral1 W/ProviderInstaller: Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
2019-07-05 10:04:21.755 8802-8849/com.admiral_odessa.firebaseadmiral1 I/OpenGLRenderer: Initialized EGL, version 1.4
2019-07-05 10:04:21.755 8802-8849/com.admiral_odessa.firebaseadmiral1 D/OpenGLRenderer: Swap behavior 1
2019-07-05 10:04:21.756 8802-8849/com.admiral_odessa.firebaseadmiral1 W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
2019-07-05 10:04:21.756 8802-8849/com.admiral_odessa.firebaseadmiral1 D/OpenGLRenderer: Swap behavior 0
2019-07-05 10:04:21.777 8802-8849/com.admiral_odessa.firebaseadmiral1 D/EGL_emulation: eglCreateContext: 0xa0e9a580: maj 2 min 0 rcv 2
2019-07-05 10:04:21.832 8802-8849/com.admiral_odessa.firebaseadmiral1 D/EGL_emulation: eglMakeCurrent: 0xa0e9a580: ver 2 0 (tinfo 0xaccfb330)
2019-07-05 10:04:21.861 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: Do partial code cache collection, code=33KB, data=53KB
2019-07-05 10:04:21.886 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: After code cache collection, code=33KB, data=53KB
2019-07-05 10:04:21.886 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: Increasing code cache capacity to 256KB
2019-07-05 10:04:21.891 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: JIT allocated 71KB for compiled code of void android.widget.TextView.<init>(android.content.Context, android.util.AttributeSet, int, int)
2019-07-05 10:04:21.891 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: Compiler allocated 4MB to compile void android.widget.TextView.<init>(android.content.Context, android.util.AttributeSet, int, int)
2019-07-05 10:04:21.915 8802-8844/com.admiral_odessa.firebaseadmiral1 V/FA: Connection attempt already in progress
2019-07-05 10:04:21.916 8802-8844/com.admiral_odessa.firebaseadmiral1 V/FA: Connection attempt already in progress
2019-07-05 10:04:21.928 8802-8844/com.admiral_odessa.firebaseadmiral1 V/FA: Activity resumed, time: 32836187
2019-07-05 10:04:22.022 8802-8849/com.admiral_odessa.firebaseadmiral1 D/EGL_emulation: eglMakeCurrent: 0xa0e9a580: ver 2 0 (tinfo 0xaccfb330)
2019-07-05 10:04:22.052 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: Do full code cache collection, code=125KB, data=66KB
2019-07-05 10:04:22.052 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: After code cache collection, code=118KB, data=47KB
2019-07-05 10:04:22.061 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: Do partial code cache collection, code=118KB, data=48KB
2019-07-05 10:04:22.061 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: After code cache collection, code=118KB, data=48KB
2019-07-05 10:04:22.061 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: Increasing code cache capacity to 512KB
2019-07-05 10:04:22.132 8802-8849/com.admiral_odessa.firebaseadmiral1 D/EGL_emulation: eglMakeCurrent: 0xa0e9a580: ver 2 0 (tinfo 0xaccfb330)
2019-07-05 10:04:22.195 8802-8844/com.admiral_odessa.firebaseadmiral1 D/FA: Connected to remote service
2019-07-05 10:04:22.206 8802-8844/com.admiral_odessa.firebaseadmiral1 V/FA: Processing queued up service tasks: 4
2019-07-05 10:04:22.208 8802-8849/com.admiral_odessa.firebaseadmiral1 D/EGL_emulation: eglMakeCurrent: 0xa0e9a580: ver 2 0 (tinfo 0xaccfb330)
2019-07-05 10:04:22.259 8802-8802/com.admiral_odessa.firebaseadmiral1 W/View: dispatchProvideAutofillStructure(): not laid out, ignoring
2019-07-05 10:04:22.259 8802-8802/com.admiral_odessa.firebaseadmiral1 W/View: dispatchProvideAutofillStructure(): not laid out, ignoring
2019-07-05 10:04:22.265 8802-8802/com.admiral_odessa.firebaseadmiral1 W/View: dispatchProvideAutofillStructure(): not laid out, ignoring
2019-07-05 10:04:22.276 8802-8802/com.admiral_odessa.firebaseadmiral1 I/AssistStructure: Flattened final assist data: 6212 bytes, containing 1 windows, 25 views
2019-07-05 10:04:23.633 8802-8849/com.admiral_odessa.firebaseadmiral1 D/EGL_emulation: eglMakeCurrent: 0xa0e9a580: ver 2 0 (tinfo 0xaccfb330)
2019-07-05 10:04:23.698 8802-8849/com.admiral_odessa.firebaseadmiral1 D/EGL_emulation: eglMakeCurrent: 0xa0e9a580: ver 2 0 (tinfo 0xaccfb330)
2019-07-05 10:04:25.666 8802-8849/com.admiral_odessa.firebaseadmiral1 D/EGL_emulation: eglMakeCurrent: 0xa0e9a580: ver 2 0 (tinfo 0xaccfb330)
2019-07-05 10:04:27.514 8802-8844/com.admiral_odessa.firebaseadmiral1 V/FA: Inactivity, disconnecting from the service
2019-07-05 10:05:29.632 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: Do full code cache collection, code=249KB, data=151KB
2019-07-05 10:05:29.633 8802-8807/com.admiral_odessa.firebaseadmiral1 I/zygote: After code cache collection, code=158KB, data=105KB
let Database Firestore.firestore()
Database.collection(collection ID).getDocuments{(snapshot, err)}