0

User という名前の mongodb モデルがあります。このモデルには、"inventory" (ユーザーに含まれるすべてのアイテムが含まれます) という名前の混合スキーマ型変数があります。すべてのユーザーをループして、インベントリ内の各アイテムの名前を変更したいと思います。特に、「10_alex_magician」または「3_maia_princess」の形式の文字列を、それぞれ「alex_magician」および「maia_princess」に変換したいと考えています。文字列の変換は比較的簡単で、変換を行うために x.split(' ').slice(1).join(' ') を使用しています。

私が問題を抱えているのは、console.log が変換が適用されたことを示している場合でも、mongodb に正しく更新されていないように見えますが、エラー メッセージはスローされていません。これを解決する方法を知っている人はいますか?

Node.js 関数

//function to change old naming of items "10_alex_magician" to "alex_magician"
function modifyUser() {
  User.find({}, function(err, results) {
    _.map(results, function(result) {
      var regex = /^\d+_[A-Za-z]+_[A-Za-z]+$/
      for (var i = 0, len = result.inventory.length; i < len; i++) {
        if(regex.test(result.inventory[i].itemName)) {
          result.inventory[i].itemName = result.inventory[i].itemName.split('_').slice(1).join('_');  
          result.save(function(err, r) {
            if(err) console.log(err);
            //logging r shows that the text has been correctly updated
            console.log(r)
          });

        }
      }       
    })
  })
}

在庫変数の形式

"inventory": [
      {
        "type": "sticker",
        "numberOwned": 2,
        "itemName": "1_alex_magician"
      },
      {
        "type": "sticker",
        "numberOwned": 1,
        "itemName": "10_alex_scuba"
      }
    ],
4

1 に答える 1