如何更新mongoose默认字符串架构属性修剪?

时间:2013-01-07 21:47:33

标签: mongoose

我希望默认情况下每个字符串属性都将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 }
});

2 个答案:

答案 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();
});

应该这样做。