简体   繁体   中英

Creating a dictionary schema with Mongoose

I am trying to store a dictionary of objects using Mongoose. Realizing that I lose the change detection for saving with using the Mixed type, I was hoping I could create a schema that would not require the Mixed type.

There are plenty of examples of creating schemas for arrays of objects, but not dictionaries of objects. Is it possible to do this?

Format:

{
    ObjectId : {
        "attempts" : {
            "response" : String,
            "timestamp" : Date
        },
        "complete" : Boolean
    }
}

There is no support for dictionary in mongoose . Field name can't be dynamic in a schema. You should go with a raw object(embedded document) and implement it as a dictionary. But there will be no validation from mongoose and use markModified before saving whenever you have changed that field

var fooSchema=mongoose.Schema({name:String, dic:{}});
//dic is your dictionary

更新:从 5.1 猫鼬有一个地图类型: https : //mongoosejs.com/docs/schematypes.html#maps

You can have your dictionary like this with meta being a dictionary:

var UserSchema = new Schema({
  meta: {
    votes: Number,
    favs:  Number
  }
  first_name:  String,
  last_name: String,
  profile_pic:   String,
  gender: String,
  timezone: Number
  date: { type: Date, default: Date.now },
  updated: { type: Date, default: Date.now },
  country: {id: Number, name: String}


});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM