我创建了一个名为“硬币”的集合,如果用户单击我网站上显示的每个硬币旁边出现的“关注”按钮,这些硬币(例如比特币)就会添加到数据库中。问题是,如果用户多次单击“关注”按钮,则每次用户单击该硬币时,该硬币都会添加到数据库中。我想要做的是,如果该特定硬币已经在数据库中,则不要设置()。我确信有一种方法可以做到这一点,但我不确定。我 set() 的所有数据都来自一个名为 data 的对象,该对象保存了硬币的所有数据。
const FollowIcon = ({ price }) => {
const db = firebase.firestore();
const [title, setTitle] = useState("Follow");
const [following, setFollowing] = useState(false);
这是我的功能组件的顶部。 {price} 保存唯一的硬币数据。 它之所以独特是因为我将 URL 设为动态,所以如果 用户访问比特币,url将为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);
现在,当您第二次运行此命令时,它只会更新同一文档。
关于javascript - 如果 firebase 上已存在 key ,如何阻止 collection() 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58775629/