我的架构中的fieldname“type”

时间:2014-05-27 01:53:48

标签: node.js mongodb mongoose

我有一个非常奇怪的情绪;我的架构有一个名为“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}

}
);

0 个答案:

没有答案