我有一个名为 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"
}
],