Industrial
Industrial

Reputation: 42778

Dates in mongoose?

I know that I can set Date.now as a default value in a mongoose schema, but what other Javascript date types or are all dates automatically converted to mongodb´s standard format - ISOdate?

Are there anything I should be concerned about when it comes to storing dates?

dates: {
    created:  {type: Date, default: Date.now},
}

Thanks

Upvotes: 28

Views: 65616

Answers (3)

Gal Margalit
Gal Margalit

Reputation: 5844

Mongoose date casting has a couple of small cases where it differs from JavaScript's native date parsing.
You might be interested in reading how to work with dates, to better understand casting errors and common pitfalls: https://mongoosejs.com/docs/tutorials/dates.html.

  1. Mongoose looks for a valueOf() function on the given object, and calls valueOf() before casting the date. This means Mongoose can cast moment objects to dates automatically.
const moment = require('moment');
const user = new User({
  name: 'Jean-Luc Picard',
  lastActiveAt: moment.utc('2002-12-09')
});
user.lastActiveAt; // "2002-12-09T00:00:00.000Z"
  1. By default, if you pass a numeric string to the Date constructor, JavaScript will attempt to convert it to a year.

    new Date(1552261496289); // "2019-03-10T23:44:56.289Z"
    new Date('1552261496289'); // "Invalid Date"
    new Date('2010'); // 2010-01-01T00:00:00.000Z

Mongoose converts numeric strings that contain numbers outside the range of representable dates in JavaScript and converts them to numbers before passing them to the date constructor.

Upvotes: 1

nihilism
nihilism

Reputation: 1

you need cover to new Date(req.body.time).toString() , req.body.time is a time format month/day/year or month-day-year month before day

Upvotes: 0

alessioalex
alessioalex

Reputation: 63683

The only thing you should take care of is converting the MongoDB/BSON UTC date to your local timezone (in case you need this).

For more info checkout: http://docs.mongodb.org/manual/reference/bson-types/#document-bson-type-date

Upvotes: 18

Related Questions