2017-06-14 10 views
1

このMeteorサーバーコードは、オブジェクトを配列に追加し、新しい配列でコレクションを更新するか、空の配列が存在しない場合は更新します。配列が整数に変更されます

コードの後でremoveFromPendingArrが呼び出されます。
しかし、mongoシェルは、配列の値が1であり、配列[]が空でも塗りつぶしでもないことを示しています。
何故、どのように修正するのか? thx

'addToPendingArr': function (myObj) { 
     let results = []; 
     let pendingArr = Meteor.users.findOne({_id: ab.userIdForAB()}).myArr; 

     if (typeof pendingArr === 'object') { 
     results = pendingArr.push(myObj); 
     Meteor.users.update({_id: ab.userIdForAB()}, {$set: {myArr: results}}); 
     } 
     return results; 
    }, 


'removeFromPendingArr': function (xxx) { 
    let results = []; 
    let pendingArr = Meteor.users.findOne({_id: ab.userIdForAB()}).myArr; 

     if (typeof pendingArr === 'object' && pendingArr.length > 0) { 
     results = pendingArr.filter(y => y.mark !== xxx); 
     } 

     Meteor.users.update({_id: ab.userIdForAB()}, {$set: {myArr: results}}); 
     return results; 
    }, 
+0

'結果= pendingArr.push(このmyobj);' - results' 'の結果は[ "ドキュメント"] -see配列の新しい長さ(https://developer.mozilla.org/en/ docs/Web/JavaScript/Reference/Global_Objects/Array/push?v =コントロール#Return_value) –

+0

が表示されます。あなたは修正を投稿したいですか? thx –

+0

そう、あなたはそれを把握することはできませんか? 'results'を使用したところで' pendingArr'を使ってください。(コードの後半) - 結果は配列でなければならないので簡単ではありません。あなたがそれを理解したら、ロケット手術ではありません。あなたが思うものは、使用する必要があるものを使用してください –

答えて

1

なぜMongoから$ pushと$ pullを使用しないのですか?

'addToPendingArr': function (myObj) { 
    Meteor.users.update(
     { _id: ab.userIdForAB() }, 
     { $push: { myArr: myObj } } 
    ); 
} 

'removeFromPendingArr': function (xxx) { 
    Meteor.users.update(
     { _id: ab.userIdForAB() }, 
     { $pull: { myArr: xxx } } 
    ); 
} 
関連する問題