MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jaka jest różnica między Date.now() i Date.now w manguście?

Wiem, że to stare pytanie, ale przyjęta odpowiedź nie wyjaśnia właściwie różnicy. Wyjaśnia różnicę w zachowaniu, ale nie wyjaśnia, jak faktycznie działa.

W twojej mongoose schemat, Twój default może być wartością określonego typu lub funkcją zwracającą wartość określonego typu. Date.now jest wbudowaną funkcją JavaScript, która zwraca bieżący uniksowy znacznik czasu jako liczbę.

Jeśli zdasz Date.now jako default w twojej mongoose schemat, przekazujesz funkcję i mongoose wywoła tę funkcję za każdym razem, gdy dokument będzie wymagał wartości domyślnej dla tej właściwości. Daje to wynik bieżący, w czasie dokumentu tworzenie , przechowywane jako wartość tej właściwości.

Jeśli jednak zdasz Date.now() zamiast tego przekazujesz wartość zwróconą przez Date.now() zamiast funkcji. W ten sposób Twoje dokumenty otrzymają aktualny czas w czasie schematu tworzenie , jako wartość domyślną dla tej właściwości. Oznacza to, że Twoje dokumenty będą przechowywać czas ostatniego wdrożenia, co prawdopodobnie nie jest tym, czego chcesz.

Jeśli Date.now była stała „zastąpiona przez Mongoose bieżącą datą i godziną podczas tworzenia nowego rekordu”, jak sugeruje przyjęta odpowiedź, wtedy logicznie powinno działać:

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

Ale Date.now nie jest magicznie zastąpiony przez mongoose , jest to funkcja i nie można dodać liczby do funkcji. Możesz jednak wywołać funkcję wewnątrz własnej funkcji i dodać liczbę do wyniku, jak pokazano poniżej:

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

Ponieważ z przyjętej odpowiedzi nie wynikało jasno, że Date.now jest funkcją, a nie mongoose stały, chciałem to wyjaśnić. Różnica między Date.now() i Date.now czy to Date.now() wywołuje funkcję i zwraca wynik, podczas gdy Date.now zwraca samą funkcję.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zwracanie pól niestandardowych w MongoDB

  2. I operator mongoosastyczny (filtr)

  3. MongoException:klucze o zerowej długości są niedozwolone, czy użyłeś $ z podwójnymi cudzysłowami?

  4. wypychanie obiektu do schematu tablicy w Mongoose

  5. jak zdefiniować lokalizację w encji za pomocą mongodb