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"
}
],