2017-11-28 3 views
0

したがって、私はアイテムであるマングーススキーマを作成しようとしています。その項目の下にはサブ項目があります。例:私はコードを呼び出すと、このように見えるアイテムオブジェクトのJSONを渡すとマングーススキーマの呼び出し自体が_idを取得していません

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var ItemSchema = new Schema({ 
    description: { en_US: String }, 
    title: { en_US: String }, 
    subtitle: { en_US: String }, 
    type: String, 
    value: Schema.Types.Mixed, 
    items: [{type: Schema.Types.Object, ref: 'ItemSchema'}] 
}); 

module.exports = mongoose.model('Item', ItemSchema); 

は:

"items": [{ 
      "type": "photo", 
      "title": { 
       "en_US": "Add Photo" 
      } 
     }, 
     { 
      "required": true, 
      "type": "list", 
      "title": { 
       "en_US": "Select Type of Call" 
      }, 
      "items": [{ 
        "type": "list_option", 
        "title": { 
         "en_US": "Homework Help" 
        } 
       }, 
       { 
        "type": "list_option", 
        "title": { 
         "en_US": "Not Available" 
        } 
       } 
      ] 
     }] 

写真およびリストアイテムが_idではなく、他の人を取得...ここにはあります結果:

"items": [ 
     { 
      "type": "photo", 
      "_id": "5a1d99f5ceec230014b83d81", 
      "items": [], 
      "title": { 
       "en_US": "Add Photo" 
      } 
     }, 
     { 
      "type": "list", 
      "_id": "5a1d99f5ceec230014b83d80", 
      "items": [ 
       { 
        "title": { 
         "en_US": "Homework Help" 
        }, 
        "type": "list_option" 
       }, 
       { 
        "title": { 
         "en_US": "Not Available" 
        }, 
        "type": "list_option" 
       } 
      ] 
     }] 

私はあるだろうか、それがそれぞれ異なるサブアイテム(旧車・フォード・コンパクト・エスコート(の限り10としてのレベルが深く行くことができますどのように多くのサブ項目を知ることはありません。サブレベル))。それを持つすべてのサブアイテムの_idsを作成するには、どのようにアイテムを取得できますか?

ありがとうございました。

答えて

0

OKこれを回避する方法を見つけました。だから最初のデータは、その中に複数の項目を持つ単一のオブジェクトとして関数に来ていた。私がしなければならなかったことは、_idを含むmongooseスキーマでループアクションを作成した関数を書くことでした。

var ItemSchema = new Schema({ 
    _id: Schema.Types.ObjectId, 
    description: { en_US: String }, 
    title: { en_US: String }, 
    type: String, 
    value: Schema.Types.Mixed, 
    items: [{type: Schema.Types.Object, ref: 'ItemSchema'}] 
}); 

ここでデータを保存すると、アイテムオブジェクト全体を一度に保存できませんでした。代わりに、私はアイテムものの歩くと、このような独立した一つ一つを保存する必要があります。

function nextItem(item){ 
    var saveItem = Item({ 
     _id: new mongoose.Types.ObjectId, 
     description: item.description, 
     title: item.title, 
     type: item.type, 
     value: item.value 
    }); 

    var fullItem = saveItem; 

    if(item.items){ 
     fullItem.items = []; 
     item.items.forEach(function(item){ 
      var tempItem = newItem(item); 
      fullItem.items.push(tempItem); 
     }); 
     return fullItem 
    } else { 
     return fullItem 
    } 
} 

これは正しい項目オブジェクトと私は後で彼らのために検索することができとてもユニークだった_idsを作成します。それは、私が他のオブジェクトの中のアイテム配列に同じことを行い、親オブジェクトを正しいitem _idsで保存することさえ可能にしました。これが他の人にも役立つことを願っています。

関連する問題