मैं इस डेटा को मोंगोडब में स्टोर करना चाहता हूं, लेकिन मुझे नहीं पता कि इसे कैसे लूप करना है, लंबे समय तक कोशिश की और सही जवाब नहीं मिला

पेड़ डेटा है

[
  {
     name: 'A',
     children: [
       { 
         name: 'A1',
         children: [
           {
             name: 'A11',
             children: []
           }
         ]
       },
       {
         name: 'A2',
         children: []
       },
     ]
  },
  {
     name: 'B',
     children: [
       { 
          name: 'B1',
          children: []
       },
       { 
          name: 'B2',
          children: [
            {
              name: 'B21',
              children: []
            }
          ]
       },
     ]
  },
]

मेरी स्कीमा है

const TempSchema = new mongoose.Schema({
  name: String,
  parent: { type: ObjectId, ref: 'Temp' },
}

मुझे यह परिणाम मिलने की उम्मीद है

{ _id: 5dea0671855f5d4b44774afd, name: 'A', parent: null, },
{ _id: 5dea07383ef7973e80883efd, name: 'A1', parent: 5dea0671855f5d4b44774afd, },
{ _id: 5dea07461047036d7c958771, name: 'A11', parent: 5dea07383ef7973e80883efd, },
{ _id: 5def00c05de2b22f8e6b9bfe, name: 'A2', parent: 5dea0671855f5d4b44774afd, },
...

इस समस्या ने मुझे लंबे समय से परेशान किया है, सभी की मदद की उम्मीद है, धन्यवाद!

0
nline BGO 17 पद 2019, 17:12

1 उत्तर

सबसे बढ़िया उत्तर
  1. आईडी और फ्लैट बनाएं
  const ObjectId = mongoose.Types.ObjectId;
  const flatten = (data, parent = null) =>
    data.flatMap(e => {
      e._id = ObjectId();
      return ([{
        _id: e._id,
        parent,
        name: e.name
      },
      ...flatten(e.children, e._id)])
    });
  const result = flatten(tree);

  await Model.insertMany(result)
0
nline BGO 19 पद 2019, 11:30