funktion addItem(list_id, item_name) { if(!item_name &&!list_id) return; lists.update({_id:list_id}, {$addToSet:{items:{Name:item_name}}}); }
Det ser ud til, at du prøver at tilføje et objekt til et sæt. Du får en fejl ved simulering. Lad os undersøge den fejl. Koden, der fejler:
https://github.com/meteor/meteor/blob /master/packages/minimongo/modify.js
$addToSet:funktion (mål, felt, arg) { var x =mål[felt]; if (x ===udefineret) mål[felt] =[arg]; else if (!(x forekomst af Array)) throw Error("Kan ikke anvende $addToSet modifier til ikke-array"); andet { ...
Åh åh, kast fejl("Kan ikke anvende $addToSet-modifikator på ikke-array.")
.
Se på din kode:
Objektkategori:"Værktøjer" _id:"eaa681e1-83f2-49f2-a42b-c6d84e526270"... elementer:Objekt...
elementer
er et objekt, ikke et array! Det vil fejle.
Kan du $addToSet
til et objekt med Mongo? Lad os se på koden.
case ADDTOSET:{ uassert( 12592 , "$addToSet kan kun anvendes på et array" , in.type() ==Array ); ... }
Nix! Dette er fra gammel Mongo-kode, fordi den moderne kodebase er vidtstrakt, men det samme.
Jeg fandt kun én indsæt
i din kode.
'keyup #add-category':function(e, t) { if (e.which ===13) { var catVal =String(e.target.value || ""); if (catVal) { lists.insert({Kategori:catVal}); Session.set('adding_category', falsk); } }},
Prøv lists.insert({Category:catVal,items:[]})
. Så elementer initialiseres som et array snarere end et objekt, da det blev brugt første gang.
Jeg tror heller ikke $addToSet
sammenligner objekter i et array, som du alligevel gerne vil, så overvej at lave en separat samling Items
der indeholder et categoryId
.
Det er rent tilfældigt, at det arbejder et sted og ikke et andet.