javascript - 如何在 Firebase Firestore 中添加验证以防止添加重复的文档 ID
问题描述
我在 Firestore 中手动插入文档 ID,即汽车文档
//Example Doc
cars:{
chasisNumber :{
chasisNumber:123dfs,
carName: BMW
}
}
//Example Doc
在这段代码中,如果我不小心再次添加了相同的底盘号,那么它会覆盖现有的值,这些值存储在现有的底盘号上
import db from "./firebase";
function ShowCars() {
const [chasis, setChasis] = useState("");
const [name, setName] = useState("");
const addCar =(e)=>{
e.preventDefault();
db.collection("cars").doc(chasis).set({
chasisNumber:chasis,
carName:name
});
}
return (
<div>
<form>
<input placeholder="chasis No" type="text" onChange={(e)=>{setChasis(e.target.value)} value={chasis}/>
<input placeholder="Car Name" type="text" onChange={(e)=>{setName(e.target.value)} value={name}/>
<button type="submit" onClick={addCar}>Add</button>
</form>
</div>
)
}
export default ShowCars;
我想避免传递相同的文档,因此它应该在屏幕上显示一些味精作为警报
解决方案
如果您想防止底盘编号重复,请按照以下步骤操作:-
通过机箱编号键检查您的 Db (Firestore) 。
请检查代码是否方便。
从'./../firebase'导入firebase;//你可以将firebase命名为DB,就像你做eailer一样。
firebase.firestore().collection('cars').where('chasisNumber','==','yourChasisNumber').onSnapshot((snapshot) => {let cars = snapshot.docs.map((doc) = > ({ id: doc.id, ...doc.data() })); 返回汽车;});
- 如果它返回一些数据,则使用return关键字打破函数中的控制。
- 否则推送您的数据。
这是您可以尝试的更简单的解决方案。
推荐阅读
- android - 在导航抽屉活动中更改片段 (Kotlin)
- laravel - 覆盖默认时间戳名称在 Lumen 7 中不起作用
- android - 无法安装由 Visual C++ 制作的 apk
- sql - 获取两列的不同值并合并成行
- python - 在尼日利亚用 chromebook 学习编程语言有困难
- python - (-215:Assertion failed) number < max_number in function 'cv::icvExtractPattern' 错误?
- javascript - 从 React Context 消费返回无法读取未定义的属性“地图”
- c - 我如何必须使用外部变量?
- database - 通过 LINQ 检索非活动客户端
- ios - UICollectionView 高度在第一次加载时调整大小