MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Каква е разликата между Date.now() и Date.now в mongoose?

Знам, че това е стар въпрос, но приетият отговор не обяснява правилно разликата. Обяснява разликата в поведението, но не и как всъщност работи.

Във вашия mongoose схема, вашата default може да бъде или стойност от посочения тип, или функция, която връща стойност от посочения тип. Date.now е вградена функция в Javascript, която връща текущия времеви печат на unix като число.

Ако подадете Date.now като default във вашия mongoose schema, вие предавате функцията и mongoose ще извиква тази функция всеки път, когато документ се нуждае от стойност по подразбиране за това свойство. Това води до текущия час, към момента на документа създаването , като се съхранява като стойност за това свойство.

Ако обаче подадете Date.now() вместо това вие предавате стойността, върната от Date.now() а не функцията. Правейки това, вашите документи ще получат текущото време, по време на схемата създаването , като стойност по подразбиране за това свойство. Това означава, че вашите документи ще съхраняват времето на последното внедряване, което вероятно не е това, което искате.

Ако Date.now беше константа „заменена от Mongoose с текущата дата и час при създаване на нов запис“, както е предложено от приетия отговор, тогава следното трябва логично да работи:

validUntil: {
  type: Date,
  default: Date.now + 3*60*60*1000 // 3 hours from now
}

Но Date.now не е магически заменен от mongoose , това е функция и не можете да добавите число към функция. Можете обаче да извикате функция вътре в собствената си функция и да добавите число към резултата, както е показано по-долу:

validUntil: {
  type: Date,
  default: () => Date.now() + 3*60*60*1000 // 3 hours from now
}

Тъй като не стана ясно от приетия отговор, че Date.now е функция, а не mongoose постоянно, исках да изясня това. Разликата между Date.now() и Date.now е това Date.now() извиква функцията и връща резултата, докато Date.now връща самата функция.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да използвам оператор LIKE на mongoose?

  2. Съвпадение на множество критерии в масив

  3. Как да взема само статии с коментари, създадени преди 20 минути?

  4. Задайте множество полета с една заявка за актуализиране

  5. Може ли mongo да премахва автоматично колекции?