繁体   English   中英

如何在 Firestore 集合中引用自动生成的 id

[英]how to reference an autogenerated id in firestore collection

每次单击进度按钮时,我想使用自动生成的 id(使用火存储)更新文档中的“进度”字段。 在此处输入图像描述

我尝试了几种不同的方式,但似乎没有任何效果。 我附上我的方法:

 useEffect(() => { var user = firebase.auth().currentUser; var email = user.email; var documentID = database.collection("ChosenChallenge").doc().id; database.collection("Users").doc(email).collection("ChosenChallenge").doc(documentID).update({ Progress: percentRange }).then(() => { console.log('added;'); }), }, )

和 class:

 import React, { useState, useEffect } from "react"; import './newprogressbar.css'; import { firebaseAppAuth, database } from "../firebase"; import firebase from "firebase/app"; export const ProgressBarContainer = (props) => { let [percentRange, setProgress] = useState(0); const handleUpdate = () => { setProgress(percentRange < 99? percentRange + 7.14285714: 100); props.onChange(percentRange + 7.14285714); } const Range = (props) => { return ( <div className="range" style={{width: `${props.percentRange}%`}}/> ); }; const ProgressBar = (props) => { return ( <div className="progress-bar"> <Range percentRange={props.percentRange}/> </div> ); }; useEffect(() => { var user = firebase.auth().currentUser; var email = user.email; var documentID = database.collection("ChosenChallenge").doc().id; database.collection("Users").doc(email).collection("ChosenChallenge").doc(documentID).update({ Progress: percentRange }).then(() => { console.log('added;'); }), }; ) return ( <div id="progresscontainer"> <ProgressBar percentRange={percentRange} /> <button id="updatepic" onClick={handleUpdate}>Daily Update</button> </div> ); };

任何帮助高度赞赏!

database.collection("ChosenChallenge").doc().id每次调用都会生成一个新的随机文档 ID。 它不知道您想要哪个现有文档。

如果要更新文档,则必须知道其现有 ID。 这是无法避免的。 如果您不知道 ID,则需要根据您对文档内容的了解来 查询集合以查找文档 ID。

如果您不知道 ID 并且您对过滤查询的文档内容一无所知,那么您就会陷入困境,您可能需要重新考虑如何将 Firestore 用于此应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM