3

我想让每个字符串属性默认设置为 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 }
});
4

2 回答 2

6

为模式路径重用通用配置的一个好方法是使用变量来设置它们。

像这样:

var trimmedString = { type: String, trim: true };

var schema = new Schema({
  p1: trimmedString,
  p2: trimmedString,
  p3: trimmedString,
  p4: trimmedString
});

您还可以从为您设置默认值的函数返回定义,但允许您进行两个覆盖(或添加其他设置,如索引或默认值)。

像这样:

(使用下划线库的默认方法

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 })
});
于 2013-09-26T12:25:16.000 回答
-1

您可以添加一个预处理函数,如下所示(MySchema 是您调用架构的名称):

MySchema.pre('save', function(next) {
  for (var fld in this) {
    this[fld] = trim(this[fld]);
  }
  next();
});

那应该这样做。

于 2013-01-09T19:22:30.587 回答