Mongoose模型重新保存模型属性(对象)为新

时间:2015-09-20 09:00:11

标签: node.js mongodb mongoose

我有模特"用户"使用anttribute"要求",这是包含许多其他属性的对象,意味着另一个级别的要求。例如:

User: {
    name: "Jack",
    requirements: {
        animals: {
           panda: 1,
           lion: 2
        },
        stock: {
            water: 3
        }
    }
}

当用户购买动物或水桶时,我会从需求中减少购买的物品,因此最终,用户的所有属性都等于零。当用户完成此操作时,他会升级并设置新的需求对象,表示另一个级别的新需求:

user.requirements = undefined;
// Line A
user.requirements = {
    animals: { fox: 1}
}
user.save();

但是当我这样做时,那么在数据库中将以前需求对象的需求保持为零,所以代替上面的对象就是这个对象:

User: {
    name: "Jack",
    requirements: {
        animals: {
           panda: 0,
           lion: 0,
           fox: 1
        },
        stock: {
            water: 0
        }
    }
}

我需要用零除掉要求,但只有当我升级时,不是当我普通保存模型时(例如用户需要1个panad,用户购买1个熊猫,它会将熊猫需求减少1并保存数量需求) 0 - 没关系。没有什么是好的,当用户完成所有要求 - 设置为0,并加载新的级别要求 - 加载后仍然有一些0。

也许我会在A线保存模型?我认为保存两次并不好 - 我需要导致保存的异步性质。有没有更简单或更好的解决方案?

示例中的快速问题 我需要购买1只熊猫和1桶水才能升级。所以我买了1只熊猫。对熊猫的要求现在为0 - 没关系。然后我买了1桶水。现在我完成了所有要求(它们全部为0),所以我升级 - 将要求更改为新要求。更改要求后,不得为任何0,特别是以前的要求不得为0.

1 个答案:

答案 0 :(得分:0)

我通过将requirements属性设置为undefined,然后将其保存并最终将需求对象设置为所需对象来解决此问题,例如:

gets()