سؤال

لدي كائن المجال المستخدمة في هوية خريطة (المفاتيح الكائن Id مكان الإقامة).

شبة الكود:

map = new Mapping();
map[domainObj.Id] = 'foo';

ألاحظ الكائن أن تخبرني عندما تم حفظ قاعدة البيانات:

domainObj.bind('saved', function() {
    map[domainObj.Id] = 'new foo!'
})

جديدة الكائنات Id حقل فارغ لا يسكنها حتى يتم حفظها في قاعدة البيانات.

وهنا تكمن مشكلتي.في حالة جديدة من الكائنات ، بحث "map[domainObj.Id]"فشل لأن الكائن تغيرت هوية بعد أن أنقذ!

ما هي أفضل طريقة لاستخدام كائن في هوية خريطة مثل هذا ؟

القيود:

  1. أنا باستخدام اللغة التي لا تسمح الأشياء مثل المفاتيح في رسم الخرائط [JavaScript]
  2. على Id المجال يجب أن يتم إنشاؤها على الملقم عند حفظ كائن جديد

التحديث

شكرا على ملاحظاتك.أود حقا أن يكون قيمة الأشياء المعينة بنفس الطريقة الكيانات:فقط لأن قيمة كائن لم يتم حفظها لا يعني أنه لا قيمة على خريطة التطبيق الخاص بي.أنا في الحقيقة سوء فهم ما هوية الخريطة (التي ، بعد إعادة قراءة نمط التعريف اتضح أنا لا يستخدمون حقا).

الحل جئت إلى حد كبير مباشرة من ايغور الجواب:كل كائن يحصل على هوية عشوائية المسندة إليها عند إنشاء مثيل.أنها فريدة من نوعها ، ثابتة لا تتغير أثناء حياة السياق الذي كائن يعيش.هناك لكل الكيانات من db جديدة التجسيدات.قرص على الكيانات هو أن يتم تعيين لمطابقة الهوية الحقيقية الكائن.وهذا يجعل التصحيح أسهل قليلا.هذه هي قيمة يمكنني استخدام مفتاح في رسم الخرائط.

هل كانت مفيدة؟

المحلول

حتى كائن يحصل على الهوية, انها مجرد قيمة الكائن.إلا بعد هوية أنشئت يصبح الكيان.

حتى يصبح الكائن كيان لا يمكن وضعها في هوية خريطة مثل لك - لا معنى له ، إذ لا يمكن الخروج به (بما أنك لا تملك مفتاح فريد من العثور عليه).

ممكن واحد النهج:

  1. إضافة العلم إلى الدرجة التي تشير إلى حالة الكائن (الجديد / حفظ).
  2. تنفيذ مؤقت (العميل) هوية هذه الكائنات
  3. اختياري:
    1. الحفاظ على "الجديد" الكائنات في منفصلة الهوية الخريطة (إذا كنت لا تجنب ID الصراعات بين العميل والخادم IDs)
    2. الحفاظ على "الجديد" الكائنات في نفس الهوية الخريطة (إذا كنت يمكن تجنب ID الصراعات بين العميل والخادم IDs)
  4. بمجرد أن الكائن قد تم حفظها ، استبدال معرف العميل مع ملقم معرف مجموعة الدولة حفظها ، نقل إلى الهوية الرئيسية خريطة (إذا لزم الأمر).

نرى هنا عن الكيانات مقابلقيمة الأشياء

نصائح أخرى

حسنا, عليك أن تجد وسيلة لتأجيل إضافة الكائن إلى الخريطة حتى بعد تم حفظ تعيين معرف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top