更新/删除mongoose对象属性

时间:2015-11-07 16:37:41

标签: javascript node.js mongodb mongoose

我有mongoose Schema字段:

var UserSchema = new mongoose.Schema({
    password:{
        type:String,
        required:true
    },
    name:{
        type:String,
        maxlength: 60,
        required:true
    },
    usedIn:Object
})

其中usedAt是一个对象,其projectId为 key ,用户角色为 value 。它看起来像是:

usedIn:{'563d2733135ad2542dc5bdb6':'manager','563d2733135ad2542dc5bdb7':'worker'}

这种方法让我们可以通过projectId轻松访问用户的角色,并确保用户在项目中具有独特的角色。

如果用户在此项目中没有任何角色,那么它的工作非常完美,但只要我需要更新/删除用户的角色问题就行了。即我无法更新usedIn [projectId]的属性,但我确定我要保存有效对象,保存时没有错误,但属性没有更新。与删除相同。我无法删除财产。 我正在使用

    if(role!='none')
        user.usedIn[projectId] = role;
    else
        user.usedIn[projectId] = undefined;

1 个答案:

答案 0 :(得分:0)

我在写这个问题时找到了答案:) 要在'对象'更新/删除属性我不得不用这种方式:

    if(role!='none')
        user.set('usedIn.'+projectId,role);
    else
        user.set('usedIn.'+projectId,undefined);

现在它可以很好地创建/更新/删除属性。如果有人能解释为什么这种方式有效 - 欢迎你:)