function addItem(list_id, item_name) {
if(!item_name && !list_id)
return;
lists.update({_id:list_id}, {$addToSet:{items:{Name:item_name}}});
}
ऐसा लगता है कि आप किसी ऑब्जेक्ट को किसी सेट में जोड़ने का प्रयास कर रहे हैं। आपको सिम्युलेशन पर एक त्रुटि मिल रही है। आइए उस त्रुटि की जांच करें। वह कोड जो त्रुटिपूर्ण है:
https://github.com/meteor/meteor/blob /master/packages/minimongo/modify.js
$addToSet: function (target, field, arg) {
var x = target[field];
if (x === undefined)
target[field] = [arg];
else if (!(x instanceof Array))
throw Error("Cannot apply $addToSet modifier to non-array");
else { ...
उह ओह, throw Error("Cannot apply $addToSet modifier to non-array.")
।
अपना कोड देखें:
Object
Category: "Tools"
_id: "eaa681e1-83f2-49f2-a42b-c6d84e526270"
...
items: Object
...
items
एक वस्तु है, एक सरणी नहीं! यह त्रुटिपूर्ण होगा।
क्या आप $addToSet
मोंगो के साथ एक वस्तु के लिए? आइए कोड देखें।
https://github.com/mongodb/mongo/blob1/4aad4ad1baad1baad4ad7baad7 /db/update.cpp
case ADDTOSET: {
uassert( 12592 , "$addToSet can only be applied to an array" , in.type() == Array );
...
}
नहीं! यह पुराने मोंगो कोड से है, क्योंकि समकालीन कोडबेस विशाल है, लेकिन वही बात है।
मुझे केवल एक insert
मिला है आपके कोड में।
'keyup #add-category': function(e, t) {
if (e.which === 13) {
var catVal = String(e.target.value || "");
if (catVal) {
lists.insert({Category:catVal});
Session.set('adding_category', false);
}
}
},
lists.insert({Category:catVal,items:[]})
आज़माएं . ताकि आइटम को पहली बार उपयोग किए जाने पर किसी ऑब्जेक्ट के बजाय एक सरणी के रूप में प्रारंभ किया जाए।
साथ ही, मुझे नहीं लगता कि $addToSet
किसी सरणी में वस्तुओं की तुलना वैसे ही करता है जैसे आप चाहते हैं, इसलिए एक अलग संग्रह बनाने पर विचार करें items
जिसमें एक categoryId
है ।
यह विशुद्ध रूप से एक संयोग है कि यह एक जगह काम कर रहा है और दूसरी जगह नहीं।