我正在尝试使用Mongoose存储对象字典。意识到我使用Mixed类型丢失了保存更改检测,我希望我可以创建一个不需要Mixed类型的模式。
有很多例子可以为对象数组创建模式,但不能创建对象的字典。有可能这样做吗?
格式:
{
ObjectId : {
"attempts" : {
"response" : String,
"timestamp" : Date
},
"complete" : Boolean
}
}
答案 0 :(得分:10)
mongoose
中不支持字典。字段名称在架构中不能是动态的。您应该使用原始对象(嵌入式文档)并将其实现为字典。但是,只要您更改了该字段,就无法通过mongoose
进行验证并使用markModified进行保存
var fooSchema=mongoose.Schema({name:String, dic:{}});
//dic is your dictionary
答案 1 :(得分:0)
您可以使用 meta 作为字典来使用这样的词典:
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}
});
答案 2 :(得分:0)
更新:从5.1猫鼬开始,地图类型为:https://mongoosejs.com/docs/schematypes.html#maps