1

我的 Mongoose 模式中有一个 Date 字段,我想将其转换为常规日期以进行显示。这样做的明显地方是在 getter 中,以避免到处调用prettifyDate函数。这不起作用,因为似乎 mongoose 正在获取我的 post-getter 字符串并将其提供给Date构造函数:

...
, date: {type: Date, get: function() { return 'foo'; }} 
...

在我的架构中给了我:

Cast to date failed for value "foo"

当我取文件时。

是否有可能将这个演员压制到Date? 有没有更好的方法让我想念?

4

3 回答 3

4

接受的答案是好的,但我认为你应该为此使用虚拟。它们是专门为这样的东西制作的。

schema.virtual('formatted_date').get(function () {
  // Code for prettifying where you refer to this.date
  return prettifiedDate;
});

这样您就不会在架构中放置额外的字段(仅用作虚拟字段)

于 2012-09-17T09:40:35.500 回答
0

在当前版本的 Mongoose (3.8) 中,它工作正常:

date: {type: Date, get: function(v) { return 'foo'; }}   // yields 'foo' without errors
于 2014-09-12T20:16:16.933 回答
-2

我一直在做同样的事情,并想出了一个解决方法:

, date: {type: Date}
, formatted_date: {type : String, get : prettifyDate}

然后在 prettifyDate 函数中参考:this.date

这不太可能是最好的方法,但它确实有效。请记住使用 .toISOString() 转换日期以使用函数中的原始 ISO 日期。

于 2012-05-01T22:42:11.730 回答