यह मेरा कोड है

final String name = subjectEditText.getText().toString();
final String desc = descEditText.getText().toString();

String DateNow = new SimpleDateFormat("ddmmyyyy", Locale.getDefault()).format(new Date());
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("products/" + DateNow);
myRef.setValue(name, desc);

लेकिन दो मान सहेजे नहीं जा रहे हैं, केवल नाम।

0
Vanderclin Rocha 6 अगस्त 2020, 18:28

2 जवाब

सबसे बढ़िया उत्तर

दूसरा मान जिसे आप पास करते हैं setValue को नोड की प्राथमिकता के रूप में सेट किया जा रहा है। यह प्राथमिकता फायरबेस कंसोल में दिखाई नहीं देती है, लेकिन इसे एपीआई के माध्यम से संग्रहीत और पुनर्प्राप्त किया जाता है। अगर आपको नोड के लिए DataSnapshot मिलता है, तो आप getPriority()

प्राथमिकताएं ज्यादातर इस एपीआई के पुराने दिनों से बची हुई हैं, और इन दिनों बहुत कम उपयोगी उद्देश्य की पूर्ति करती हैं।

आजकल यदि आप एक नोड के अंतर्गत एकाधिक मान संग्रहीत करना चाहते हैं, तो आपको उन्हें नाम देना चाहिए। उदाहरण के लिए:

final String name = subjectEditText.getText().toString();
final String desc = descEditText.getText().toString();

String DateNow = new SimpleDateFormat("ddmmyyyy", Locale.getDefault()).format(new Date());
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("products/" + DateNow);
Map<String, Object> values = new HashMap<>();
values.put("name", name);
values.put("desc", desc);
myRef.setValue(values);

यह DateNow के तहत एक छोटी JSON संरचना बनाएगा:

{
  "name": "the name from the text field",
  "desc": "the value from the desc field"
}

फिर आप इन मानों को वापस पढ़ सकते हैं:

myRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Log.i("database", dataSnapshot.child("name").getValue(String.class);
        Log.i("database", dataSnapshot.child("desc").getValue(String.class);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}
0
Frank van Puffelen 6 अगस्त 2020, 18:40

मानचित्र का उपयोग करना।

String DateNow = new SimpleDateFormat("ddmmyyyy", 
Locale.getDefault()).format(new Date());
FirebaseDatabase database = 
FirebaseDatabase.getInstance();
DatabaseReference myRef = 
database.getReference("products/" + DateNow);
final String name = 
subjectEditText.getText().toString();

final String desc = 
descEditText.getText().toString();
Map<String, Object> data = new HashMap<> ();
data.put("name", name);
data.put("desc", desc);
myRef.set (data).addOnSuccussListener(...)...;

आप इसके बजाय बदल सकते हैं

data.put("name", name);
data.put("desc", desc);

साथ

data.put("name_desc_array", name_desc_array);

लेकिन आपको इसके साथ सरणी बनानी होगी

ArrayList<String> name_desc_array = new ArrayList();
name_desc_array.add ("name");
name_desc_array.add ("desc");

याद रखें, मानचित्र का उपयोग करना सबसे अच्छा तरीका है

0
AKHIL V S 6 अगस्त 2020, 19:00