"تسطيح" التسلسل الهرمي للمستند لأغراض الإبلاغ

StackOverflow https://stackoverflow.com/questions/2205502

  •  18-09-2019
  •  | 
  •  

سؤال

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

{
   "_id": "29763f342ab34fd7b579fd4546aaed93",
   "_rev": "3-f56dccaa214f3e9fce1e1e3e32e710a2",
   "client_id": "sse",
   "outcomes": [
       {
           "contact": "phone",
           "type": "phone_outbound",
           "attempt": "1",
           "provider_id": "123456789",
           "status_outbound": "noanswer"
       },
       {
           "contact": "phone",
           "type": "phone_outbound",
           "attempt": "1",
           "provider_id": "123456789",
           "status_outbound": "noanswer"
       }
   ]
}

وظائف خريطة مثل هذا:

function(doc) {
    for(i=0;i<doc.outcomes.length;i++)
    {
        emit(null, {'client_id':doc.client_id,'outcome':doc.outcomes[i]});
    }
}

النتيجة التي أحصل عليها لكل صف الناتج هو:

{client_id: "sse", outcome: { contact: "phone", type: "phone_outbound", 
attempt: "1", provider_id: "123456789", status_outbound: "noanswer" }}

بدلا من

{client_id: "sse", contact: "phone", type: "phone_outbound", 
attempt: "1", provider_id: "123456789", status_outbound: "noanswer"}

انظر اضافية 'حصيلة:' وقوس في إخراج المثال الأول؟ هذا ما لا أريده. من الواضح أن رأيي خطأ لكنني غير قادر على العمل كيفية تحقيق هدفي. يمكن لأي شخص أن يساعد؟ يجب أن يظل المفتاح فارغا.

السبب في أنني لا أشير إلى كل حقل بالاسم IE Doc.Contact هو أنني أرغب في الاستفادة من طبيعة المخططات كلها. إذا قمت بإضافة حقل إضافي إلى "النتائج"، أود أن أتمكن من الإبلاغ عنها دون إضافة ذلك بشكل صريح إلى وظيفة الخريطة.

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

المحلول

Doc.Outcomes [i] .client_id = doc.client_id؛ ينبعث (null، doc.outcomes [i])؛

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