正在更新/删除猫鼬对象属性

Updating/deleting mongoose object property

本文关键字:对象 属性 删除 更新      更新时间:2023-09-26

我有mongoose架构,其中包含字段:

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

其中usedAt是一个对象,其projectId为,用户角色为value。看起来是这样的:

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

这种方法使我可以通过projectId轻松地访问用户的角色,并确保用户在项目中具有唯一的角色。

如果用户在这个项目中没有角色,它会很好地工作,但一旦我需要更新/删除用户的角色问题就开始了。例如,我无法更新usedIn〔projectId〕的属性,但我确信我给出了要保存的有效对象,在保存过程中我没有遇到任何错误,但属性没有更新。与删除相同。我无法删除属性。I.m使用

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

我在写这个问题时找到了答案:)要更新/删除"对象"的属性,我必须使用这种方式:

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

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