flutter 使函数添加产品

doinxwow  于 2023-06-24  发布在  Flutter
关注(0)|答案(1)|浏览(140)

我正在学习Flutter,我试图创建一个页面来添加产品,它在我输入数据后工作,它成功地将其添加到数据库。

CollectionReference addStock = firebaseInstance.collection('users').doc(user?.uid).collection("productstock");
   addStock.doc().set({
     'productname': productName,
     'productcategory': productCategory,
     'productcode': produtcCode,
     'stockamount': amount
   });

但我想做的是,如果productnameproductcategory,和productcode已经存在于数据库中,我不想创建一个新的文档ID,而只是更新股票。否则,如果productnameproductcodeproductcategory不在数据库中,我想创建一个新的id。如何让函数正常工作?
我试过创建一个这样的函数,它成功地更新了股票,但也添加了一个新的文档id与相同的产品或重复的产品,从而创建了许多相同的产品显示。

FirebaseFirestore.instance
    .collection("users")
    .doc(user!.uid)
    .collection("productstoc")
    .where("productname", isEqualTo: productName)
    .where("productcategory", isEqualTo: productCategory)
    .where("productcode", isEqualTo: produtcCode)
    .get()
    .then((QuerySnapshot querySnapshot) {
  for (var doc in querySnapshot.docs) {
    if (productName == doc["productname"] && productCategory == doc["productcategory"] && produtcCode == doc["productcode"]) {
        CollectionReference updateStock =                     firebaseInstance.collection('users').doc(user?.uid).collection("productstock");
   updateStock.doc().update({
     'stockamount': amount + doc["stockamount"]
   });
      } else {
        CollectionReference addStock =                    firebaseInstance.collection('users').doc(user?.uid).collection("productstock");
   addStock.doc().set({
     'productname': productName,
     'productcategory': productCategory,
     'productcode': produtcCode,
     'stockamount': amount
   });
      }
  }
});
yhxst69z

yhxst69z1#

Firebase将数据存储在一个Map<String, dynamic>结构中,这是一个key-unique,它会检查你传递的doc,如果已经有数据与你传递的keys匹配,它会修改它,否则它会创建新的。我想这就是你要问的。

相关问题