2016-03-30 3 views
1

私は、このコレクションとスキーマがあります。更新/アップサート/流星&MongoDBの中にネストされたコレクションに挿入

Words = new Mongo.Collection("words"); 

WordsSchema = new SimpleSchema({ 
    date: { 
    type: String 
    }, 
    owner: { 
    type: String 
    }, 
    entries: { 
    type: [Entry] 
    } 
}); 

Entry = new SimpleSchema({ 
    post: { 
    type: String 
    }, 
    elapsed_time: { 
    type: Number 
    }, 
    createdAt: { 
    type: Date 
    } 
}); 

Words.attachSchema(WordsSchema); 

を私は単にUPSERT(または真のアップサート=とアップデートを通じて、このコレクションにエントリを追加しようとしています)、このような:

'YYYY-MM-DD')と所有者=のuserIdとして格納されている日付を持つオブジェクト=今日は(存在する場合、それだけで特定のエントリを追加すなわち
Words.update({ 
     date: today, 
     owner: Meteor.userId() 
    }, { 
     $push: { 
     entries: { post: post, elapsed_time: elapsed_time, createdAt: new Date() } 
     } 
    }, { 
     upsert: true 
    }); 

しかし、私はエラーが発生するので、私は間違ったことをしています: "エントリーが必要です"。

ご意見やご感想はありがとうございます。ありがとう。

答えて

1

この問題は何か分かりません。しかし、私はタイプを推測します:[Entry]は単純なスキーマによってサポートされていません。ここでは、同じ機能を実現するためにこれらの2つの方法を試すことができます。 1.両方のスキーマをマージします。あなたは

WordsSchema = new SimpleSchema({ 
    date: { 
    type: String 
    }, 
    owner: { 
    type: String 
    }, 
    entries: { 
    type: Array 
    } 
    "entries.$": { 
    type: Entry 
    } 
}); 

Entry = new SimpleSchema({ 
    post: { 
    type: String 
    }, 
    elapsed_time: { 
    type: Number 
    }, 
    createdAt: { 
    type: Date 
    } 
}); 
両方のスキーマを区切ることができます$使用することにより

WordsSchema = new SimpleSchema({ 
    date: { 
    type: String 
    }, 
    owner: { 
    type: String 
    }, 
    entries: { 
    type: Array 
    } 
    "entries.$": { 
    type: Object 
    }, 
    "entries.$.post: { 
    type: String 
    }, 
    "entries.$.verified": { 
    type: Boolean 
    }, 
"entries.$.verified": { 
    type: Boolean 
    } 
}); 

2

関連する問題