首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >reactjs中firestore的新文档引用

reactjs中firestore的新文档引用
EN

Stack Overflow用户
提问于 2018-11-26 00:58:29
回答 1查看 360关注 0票数 1

我正在使用reactjs,并试图将firestore中集合的文档中的一个字段的"value“设置为另一个文档的文档引用。

例如,我尝试使用下面的代码,它是一个json文件,由我使用的系统读取。

代码语言:javascript
运行
复制
import * as firebase from 'firebase';
require("firebase/firestore");

var collectionMeta={
    "users":{
        "fields":{
            "firstname":"",
            "lastname":"",
            "email": "",
            "gender":"",
            "birthday":"",
            "group":"",
            "subGroups":"",
            "roles":"-",
            "code":""
        },
        "collections":[],
    },
    "announcements":{
        "fields":{
            "title":"",
            "content":"",
            "active":false,
            "start":"",
            "end":"",
            "group": new firebase.firestore.DocumentReference("/groups/docID")
        },
        "collections":[],
    },
    "groups":{ 
        "fields":{
            "name":"",
            "registerCode":""
        },
        "collections":[]
    },
}
module.exports = collectionMeta;

目前,我在“新的firebase.firestore.DocumentReference("/groups/docID")”部件“上得到了一个错误。

我得到的错误是:

代码语言:javascript
运行
复制
Uncaught Error: This constructor is private. Use firebase.firestore().doc() instead.

但是当我尝试这样做时,我得到了以下错误:

代码语言:javascript
运行
复制
Firebase: No Firebase App '[DEFAULT]' has been cre…- call Firebase App.initializeApp()

它已经初始化了,因为如果我删除整行,一切都是正常的。

该怎么办呢?

EN

回答 1

Stack Overflow用户

发布于 2021-07-24 15:38:07

这个问题可能与您使用firebase的顺序有关。确保首先初始化firebase,然后使用firestore获取或更新任何类型的数据。

这是完成firebase初始化的firebase utils/config文件!

代码语言:javascript
运行
复制
import firebase from "firebase/app";
import "firebase/auth";
import "firebase/firestore";

const firebaseConfig = {
  apiKey: process.env.NEXT_PUBLIC_API_KEY,
  authDomain: process.env.NEXT_PUBLIC_AUTH_DOMAIN,
  projectId: process.env.NEXT_PUBLIC_PROJECT_ID,
  storageBucket: "mygiene-f2d83.appspot.com",
  messagingSenderId: "sender_id",
  appId: "app_id",
  measurementId: "measurement-id",
};

// Initialize Firebase

// this if condition checks if your firebase app is already intialized then it // stops it from re-initializing again
if (!firebase.apps.length) {
  firebase.initializeApp(firebaseConfig);
} 

// only exporting firebase auth and firestore. 
export const auth = firebase.auth();
export const firestore = firebase.firestore();

然后,只需将其导入到其他文件中即可使用,如下所示

代码语言:javascript
运行
复制
import { firestore } from "../../firebase/utils";
import { useContext, useEffect, useState } from "react";

export const Component = () => {
  const [product, setproduct] = useState();

useEffect(async () => {
    const productRef = await firestore.doc("products/grooming_kit").get();
    const { id } = productRef;
    setproduct({ ...productRef.data(), pId: id });
  }, []);


return(<>
//Simply use the value stored over state however you linke
</>)
}

瞧!:)希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53469766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档