我创建了一个名为“硬币”的集合,如果用户单击在我的网站上显示的每个硬币旁边显示的跟随按钮,这些硬币(例如比特币)将被添加到数据库中。问题在于,如果用户多次单击“跟随”按钮,则每次用户单击该代币都会将其添加到数据库中。我想做的是,如果该特定硬币已经存在于数据库中,请不要set()。我确定有解决方法,但不确定。我set()的所有数据都来自名为data的对象,该对象保存硬币的所有数据。
const FollowIcon = ({ price }) => {
const db = firebase.firestore();
const [title, setTitle] = useState("Follow");
const [following, setFollowing] = useState(false);
这是我的功能组件的顶部。{price}保存唯一的硬币数据。之所以与众不同,是因为我将网址设为动态,因此如果用户访问比特币,其网址为PriceDetails / BTC
const handleClick = () => {
let data = {
following: following,
logo_url: price.logo_url,
id: price.id,
name: price.name,
price: price.price,
userId: firebase.auth().currentUser.uid
};
//adding the data above to firebase's real time database
db.collection("coins")
.doc()
.set(data);
setTitle("Following");
setFollowing(!following);
};
handleClick函数是我在我的followButton上传递给Onclick的东西
我希望用户多次单击跟随按钮,该硬币只会被添加一次。
如果price.id
定义了要唯一的ID,则可以将该ID用作coins
集合中文档的名称:
db.collection("coins")
.doc(price.id)
.set(data);
现在第二次运行此命令,它只会更新同一文档。