使用新数据更新现有 Firebase 字段

问题描述 投票:0回答:1

更新前:
before update

我想更新波立维 75mg 的数值:“50”。当用户给出新值时,我的代码会添加带有新 ID 的新值,而不是修改前一个值。这是结果:

after update

请帮我解决这个问题。

这是我的代码。

private void updatePharmaceutical(String documentId, String newDose, String newQuantity) {
    if (storeName != null) {
        CollectionReference storeCollection = db.collection(storeName);
        Map<String, Object> updates = new HashMap<>();
        updates.put("dose", newDose);
        updates.put("quantity", newQuantity);
        storeCollection.document(documentId).update(updates)
                .addOnSuccessListener(aVoid -> {
                    Toast.makeText(this, "Successfully updated.", Toast.LENGTH_SHORT).show();
                    updateRealtimeDatabase(documentId, newQuantity); // Update Realtime Database with new quantity
                })
                .addOnFailureListener(e -> Toast.makeText(this, "Error caught while updating document", Toast.LENGTH_SHORT).show());
    }
}

private void updateRealtimeDatabase(String drugName, String newQuantity) {
    FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
    if (currentUser != null) {
        String userId = currentUser.getUid();
        DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("Pharmacists").child(userId).child("drugData");

        // Update Realtime Database with new quantity for the corresponding drug
        userRef.child(drugName).setValue(newQuantity)
                .addOnSuccessListener(aVoid -> Log.d("ViewPharmaceuticals", "Realtime Database updated with new quantity"))
                .addOnFailureListener(e -> Log.e("ViewPharmaceuticals", "Error updating Realtime Database", e));
    }
} 

我想修改相同的值而不是添加新字段。我尝试了很多方法来做到这一点,但每次尝试都没有用。

java android firebase-realtime-database
1个回答
0
投票

问题就在这里:

updateRealtimeDatabase(documentId, newQuantity)

您的

documentId
是 Firestore 中文档的 ID。您想要的是使用药物名称:

updateRealtimeDatabase("Plavix 75mg", newQuantity)

如果您不想硬编码药物名称(提示:您不想),则需要将其传递到对

updatePharmaceutical
的调用中。

© www.soinside.com 2019 - 2024. All rights reserved.