更新前:
我想更新波立维 75mg 的数值:“50”。当用户给出新值时,我的代码会添加带有新 ID 的新值,而不是修改前一个值。这是结果:
请帮我解决这个问题。
这是我的代码。
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));
}
}
我想修改相同的值而不是添加新字段。我尝试了很多方法来做到这一点,但每次尝试都没有用。
问题就在这里:
updateRealtimeDatabase(documentId, newQuantity)
您的
documentId
是 Firestore 中文档的 ID。您想要的是使用药物名称:
updateRealtimeDatabase("Plavix 75mg", newQuantity)
如果您不想硬编码药物名称(提示:您不想),则需要将其传递到对
updatePharmaceutical
的调用中。