当前位置: 首页 > 知识库问答 >
问题:

为什么在尝试更新子值时,会在我的数据库下创建一个新的子项?

柯苗宣
2023-03-14

我正在尝试更新Firebase数据库中的quantity子值,每当尝试更新时,都会创建一个新的子值,而不是更新当前值。如屏幕截图所示,当它应该更新当前数量时,将生成一个数量为2的新UID。我不知道为什么会发生这种情况,有人能帮我吗。我附上了一张数据库结构的图片,

loggedInUID: U4Rc9hD6WHUC5vjqCezclsqKdcr2
tappedonimagetimestamp: U4Rc9hD6WHUC5vjqCezclsqKdcr2 00:20:44

  @Override
public void onBindViewHolder(@NonNull ViewHolder holder, @SuppressLint("RecyclerView") final int position) {
    holder.produceName.setText(cartArrayList.get(position).getProductName());
    Log.i("productname", cartArrayList.get(position).getProductName());

    holder.producePrice.setText("$" + cartArrayList.get(position).getItemPrice());
    holder.plusImageView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            Log.i("produtUID", cartArrayList.get(position).getTimestamp());

            getCurrentUserUid();


            count = count + 1;
            holder.middleQUanityTv.setText(count + "");

            Log.i("tappedonimagetimestamp", cartArrayList.get(position).getTimestamp());
            Log.i("loggedInUID", loggedInUserId);


            FirebaseDatabase.getInstance().getReference("Cart").child(loggedInUserId).child(cartArrayList.get(position).getTimestamp()).child("quantity").setValue(count);


        }
    });


    //Log.i("IMAGES", productArrayList.get(position).getProductImage());
    Glide.with(ct)
            .load(cartArrayList.get(position).getProductImage())
            .centerCrop()
            .into(holder.productImage);


}


public void addItemToCart(){

    SimpleDateFormat formatter = new SimpleDateFormat(" HH:mm:ss ");
    Date date = new Date(System.currentTimeMillis());
    timeStamp = loggedInUserId + formatter.format(date);



    userDictionary.put("itemPrice", selectedPrice.trim());
    userDictionary.put("productname",productNameText.trim());
    userDictionary.put("description", selectedStringProductDescrtipon.trim());
    userDictionary.put("uid",loggedInUserId.trim());
    userDictionary.put("productImage", selectedImage.trim());
    userDictionary.put("datee",date.toString());
    userDictionary.put("name",loggedInUserName.trim());
    userDictionary.put("timestamp",timeStamp.trim());
    userDictionary.put("time",formatter.format(date).trim());
    userDictionary.put("quantity","1");



    uploadPostRef.child("Cart").child(loggedInUserId).child(timeStamp).setValue(userDictionary).addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void unused) {
            Log.i("sucessfully added","sucesssfully added to cart..");
            getLoggedInUserData();

        }
    });
    numberInCartIv.setVisibility(View.VISIBLE);


}

共有1个答案

锺离高丽
2023-03-14

所以问题是,当我向购物车添加商品时,我在每个值的末尾都使用了trim方法。我只是删除了这个,然后运行我的代码,一切正常。

 类似资料:
  • 我有两个表,分别名为tblOefenen(带有主键)和tblOefenen2(带有外键)。我已经删除了前面的外键,因为我想添加‘更新级联’到外键。 那么做了什么:1。我已经移除了TbloeFenen2的约束(外键)。2.我已经将新的外键添加到列ID中,我的主键在列ID上,也在表tbloefenen中: 有人能帮我一下吗?

  • 例如: 但是你可以在块之前声明它,然后它就可以正常工作了: 我只是想知道这样做的设计原因。为什么在块中创建的对象不在方法其余部分的范围内?也许我没有深入了解除了只是观察抛出的之外是如何工作的。

  • 发送到芹菜的函数是使用装饰器指向我要使用的队列,例如: 我创建了一个脚本来检查队列中还有多少任务,这只是命令的一个while循环 并用“芹菜”解析行 但由于芹菜会产生随机队列,我无法使用它。为什么芹菜正在创建新的队列,而不是真正将其发送到我想要的队列?

  • 我正在使用Bukkit API 1.8和Java7。 我有一个重复的任务,循环通过服务器上的所有玩家,并将他们的盔甲随机设置为皮革,链甲等... 当我使用、等方法时...我像往常一样更新他们的库存,但由于这个任务是每6滴答运行一次,它运行得很快。因此,当玩家试图发射弓时,每次此任务运行时弓都会重置其威力。 因为我知道更新库存有问题,所以我尝试删除方法。 我如何在保持任务运行的同时保持弓不重置? 我

  • 我不知道我做得是否正确,但我正在创建一个应用程序,为高中毕业舞会分配门票,对于每个学生,我让学校放入ID中,因为所有学生在该学校都有一个唯一的ID,并作为密钥存储。但问题是,不同学校的两个学生可能有相同的ID,所以我打算将主密钥存储为学生ID和学校ID。这是我的学生实体类。 beanCreationException:创建类路径资源[org/springframework/boot/autocon

  • 问题内容: JDBC有问题。 我有以下代码: 我收到以下错误: 我的连接字符串是 jdbc:oracle:oci:@..... Oracle版本为11g。 从错误消息看来,似乎缺少了一些东西,但是: 当我从同一个blob列(带有blob.getBytes)读取时,一切正常。 即时客户端的DLL位于库路径中(正确)。 这是我的类路径中Oracle JDBC JAR的清单: 问题答案: 看起来即使驱动