模式类型(types)
原文:SchemaTypes 翻译:小虾米(QQ:509129)
SchemaTypes
SchemaTypes 为查询处理定义path defaults, validation, getters, setters, field selection defaults ,以及为了字符串和数值的其他一般特征。检查他们各自的的更多细节的 API 文档。
以下是所有有效的Schema Types。
Boolean
Mixed
Array
例子
var schema = new Schema({
name: String,
binary: Buffer,
living: Boolean,
updated: { type: Date, default: Date.now },
age: { type: Number, min: 18, max: 65 },
mixed: Schema.Types.Mixed,
_someId: Schema.Types.ObjectId,
array: [],
ofString: [String],
ofNumber: [Number],
ofDates: [Date],
ofBuffer: [Buffer],
ofBoolean: [Boolean],
ofMixed: [Schema.Types.Mixed],
ofObjectId: [Schema.Types.ObjectId],
nested: {
stuff: { type: String, lowercase: true, trim: true }
}
})
// example use
var Thing = mongoose.model('Thing', schema);
var m = new Thing;
m.name = 'Statue of Liberty';
m.age = 125;
m.updated = new Date;
m.binary = new Buffer(0);
m.living = false;
m.mixed = { any: { thing: 'i want' } };
m.markModified('mixed');
m._someId = new mongoose.Types.ObjectId;
m.array.push(1);
m.ofString.push("strings!");
m.ofNumber.unshift(1,2,3,4);
m.ofDates.addToSet(new Date);
m.ofBuffer.pop();
m.ofMixed = [1, [], 'three', { four: 5 }];
m.nested.stuff = 'good';
m.save(callback);使用说明:
Dates
内置的日期的方法在mongoose用英语改变跟踪逻辑不是钩子,意味着如果您在文档中使用日期,并用类似的方法进行修改如setmonth(),mongoose不知道这种变化,并且doc.save()不会坚持这样的修改。如果你必须使用内置的方法修改日期类型,保存之前告诉mongoose关于doc.markModified('pathToYourDate')的变化。
Mixed
一个“什么都行”的SchemaType,它的灵活性会带来权衡它难维护。混合类型可通过schema.types.mixed或通过传递一个空的对象。以下是等价的:
因为它是一个无模式的类型,您可以将值更改为其他任何你喜欢的东西,但是Mongoose失去自动检测和保存这些变化的能力。“告诉”Mongoose,混合型的价值观已经改变了,调用.markModified(path)方法使文档传递路径到您刚刚更改的混合类型。
ObjectIds
指定一个ObjectId类型,使用Schema.Types。ObjectId在你的声明中。
Arrays
提供创建数组的SchemaTypes或子文档。
注:指定一个空数组是相当于混合类型(Mixed)。以下所有创建混合数组:
创建自定义类型
Mongoose也可以扩展自定义 SchemaTypes 。搜索兼容类型的插件站点,如, mongoose-long,mongoose-int32以及其他类型。要创建您自己的自定义schema,请看一看创建基本的自定义schema类型。
下一步
既然我们已经掌握了SchemaTypes,让我们看一看模型。
Last updated
Was this helpful?