我有一个非常奇怪的情绪;我的架构有一个名为“type”的字段名
type: { type: String, default:"article" }
模式由子类扩展,子类覆盖类型字段名称以更改默认值
当我创建文档并直接在cb触发后,找到它并将结果输出到console.log,我看到“type”并将值“article”设置为对象中的值。
当我使用mongo客户端访问它时,没有名为“type”的字段。获取该类型也不会显示使用此命令具有该字段的任何文档
db.clouds.find({},{type:1}).pretty();
在另一个脚本(稍后执行)中,我再次获取带有mongoose的文档,并且那里也没有“type”字段。
“类型”是否是一些特殊的禁忌词?我的架构从很久以来就运行良好,并且最近停止了工作。
感谢您的帮助 MongoDB:2.4.9 猫鼬:3.8.5
/ edit,使用真实架构更新。我的架构直到最近才工作了一年。
var Cloud = new Schema({
type :{ type:String, required:true },
children :[ { type:ObjectId } ], //Cloud ID
value :{ type: String, max:1024, default:function(){return "SomeRandomString" + Math.ceil(Math.random()*1000) } },
cats:[ {type: ObjectId} ]
},
{
collection:"clouds"
});
//make sure Mongooose provides the fields correctly;
Cloud.set('toJSON', { getters: true, virtuals: false } );
和这样的子类化(在另一个文件中,包括上面的文件,从而制定新的模式定义)
var ArticleCloud=Cloud;
ArticleCloud.add(
{
type: { type: String, default:"article" },
url :{ type: String , index: true },
state: {type: Number, default: config.err[500].code, index: true },
weight:{type: Number, index:true}
}
);