我不確定,但可能是錯誤發生,因爲您沒有驗證模式中的「類別」。嘗試向'類別'添加'blackbox:true',以便它接受任何類型的對象。
Industry.attachSchema(new SimpleSchema({
label: {
type: String
},
value: {
type: String
},
categories: {
type: [Object],
blackbox:true // allows all objects
}
}));
一旦你這樣做是試圖增加值,像這樣
var newObject = {
id: categoryId,
label: newCategory,
value: newCategory
}
Industry.update({
_id: industryId
}, {
$push: {
categories: newObject //newObject can be anything
}
});
這將允許您將任何類型的對象添加到類別字段。 但是你在評論中提到類別也是另一個集合。 如果你已經有了類一SimpleSchema那麼你可以驗證類別字段只接受與SimpleSchema匹配類這樣
Industry.attachSchema(new SimpleSchema({
label: {
type: String
},
value: {
type: String
},
categories: {
type: [categoriesSchema] // replace categoriesSchema by name of SimpleSchema for categories
}
}));
在這種情況下,只有符合categoriesSchema的對象的對象將被允許進入類領域。任何其他類型都將被過濾掉。你也難道不得到任何錯誤的控制檯試圖插入其他類型的(這是我認爲正在發生的事情,當你嘗試按規定沒有被驗證到現在插入)
編輯:答案說明
在SimpleSchema中,當你定義一個對象數組時,你必須對它進行驗證,也就是說,你必須告訴它它可以接受哪些對象以及不能接受哪些對象。 例如,當將其定義像
...
categories: {
type: [categoriesSchema] // Correct
}
它意味着在結構上的那些在名爲categoriesSchema另一個SimpleSchema相似的對象僅可以插入到其中。根據你的榜樣,你嘗試插入任何對象的格式應該是
{
id: categoryId,
label: newCategory,
value: newCategory
}
的任何對象,它是這種格式的不是插入時會被拒絕。這就是爲什麼你嘗試了所有的物體插入其中,拒絕當你與你的架構構建這樣
...
categories: {
type: [Object] // Not correct as there is no SimpleSchema named 'Object' to match with
}
Blackbox的最初嘗試:true現在
,可以說你做什麼你的對象被過濾並且希望所有對象被插入而不用驗證。 多數民衆贊成在設置「黑盒:真正的」進來如果你像這樣定義
...
categories: {
type: [Object], // Correct
blackbox:true
}
這意味着類可以是任何對象,不必相對於其他一些SimpleSchema驗證字段。所以無論你嘗試插入都被接受。
你在用什麼語言? –
我正在使用流星 – user3338256
你可以添加一些示例數據顯示你的集合的結構 – Nijeesh