我希望默认情况下每个字符串属性都将trim设置为true。 有办法吗?
?? mongoose.Schema.String -> default { trim: true }
var schema = new Schema({
p1: { type: String },
p2: { type: String, trim: true }
p3: { type: String, trim: true }
p4: { type: String }
});
答案 0 :(得分:5)
重用模式路径的常用配置的一种好方法是使用变量设置它们。
像这样:
var trimmedString = { type: String, trim: true };
var schema = new Schema({
p1: trimmedString,
p2: trimmedString,
p3: trimmedString,
p4: trimmedString
});
您也可以从为您设置默认值的函数返回定义,但允许您覆盖两个(或添加其他设置,如索引或默认值)。
像这样:
(使用下划线库的defaults method)
var _ = require('underscore');
var stringType = function(ops) {
return _.defaults(ops || {}, {
type: String,
trim: true
});
}
var schema = new Schema({
p1: stringType(),
p2: stringType({ index: true }),
p3: stringType({ default: "something" }),
p4: stringType({ trim: false })
});
答案 1 :(得分:-1)
您可以添加预处理功能,如下所示(MySchema是您称为架构的名称):
MySchema.pre('save', function(next) {
for (var fld in this) {
this[fld] = trim(this[fld]);
}
next();
});
应该这样做。