2016-03-30 167 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(或更新與更新插入=真),像這樣:

Words.update({ 
     date: today, 
     owner: Meteor.userId() 
    }, { 
     $push: { 
     entries: { post: post, elapsed_time: elapsed_time, createdAt: new Date() } 
     } 
    }, { 
     upsert: true 
    }); 

即如果與日期(對象=今天存儲爲 'YYYY-MM-DD')和所有者= userId的存在,它只是增加了具體的條目。

但我做錯了,因爲我得到的錯誤:「條目是必需的」。

任何幫助或想法非常感謝!謝謝。

回答

1

我不確定這是什麼問題。但我猜類型:[Entry]不受簡單模式的支持。所以在這裏你可以試試這兩種方法來實現相同的功能。 1. Marge模式。

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.通過使用$您可以單獨兩種模式

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 
    } 
});