MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Apa perbedaan antara Date.now() dan Date.now di luwak?

Saya tahu ini adalah pertanyaan lama, tetapi jawaban yang diterima tidak menjelaskan perbedaannya dengan benar. Ini menjelaskan perbedaan perilaku, tetapi bukan cara kerjanya.

Di mongoose skema, default . Anda dapat berupa nilai dari tipe yang ditentukan atau fungsi yang mengembalikan nilai dari tipe yang ditentukan. Date.now adalah fungsi Javascript bawaan yang mengembalikan cap waktu unix saat ini sebagai angka.

Jika Anda melewati Date.now sebagai default di mongoose skema, Anda melewati fungsi dan mongoose akan memanggil fungsi itu setiap kali dokumen membutuhkan nilai default untuk properti itu. Ini menghasilkan waktu saat ini, pada waktu dokumen kreasi , disimpan sebagai nilai untuk properti itu.

Namun, jika Anda melewati Date.now() sebagai gantinya, Anda meneruskan nilai yang dikembalikan oleh Date.now() ketimbang fungsinya. Dengan melakukan ini, dokumen Anda akan mendapatkan waktu saat ini, pada saat skema kreasi , sebagai nilai default untuk properti itu. Ini berarti bahwa dokumen Anda akan menyimpan waktu penerapan terbaru, yang mungkin bukan yang Anda inginkan.

Jika Date.now adalah konstanta "digantikan oleh Mongoose dengan datetime saat ini saat membuat catatan baru", seperti yang disarankan oleh jawaban yang diterima, maka yang berikut ini akan berfungsi secara logis:

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

Tapi Date.now tidak secara ajaib digantikan oleh mongoose , ini adalah fungsi dan Anda tidak dapat menambahkan angka ke suatu fungsi. Namun, Anda dapat memanggil fungsi di dalam fungsi Anda sendiri dan menambahkan nomor ke hasilnya, seperti yang ditunjukkan di bawah ini:

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

Karena tidak jelas dari jawaban yang diterima bahwa Date.now adalah fungsi dan bukan mongoose konstan, saya ingin mengklarifikasi itu. Perbedaan antara Date.now() dan Date.now apakah itu Date.now() memanggil fungsi dan mengembalikan hasilnya, sementara Date.now mengembalikan fungsi itu sendiri.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Simpan bidang putus-putus di MongoDB

  2. MongoDB - Argumen ke $size harus berupa Array, tetapi bertipe:EOO / hilang

  3. Nama bidang dokumen tidak boleh diawali dengan '$' (Kunci Buruk:'$set')

  4. MongoDB - keluar dari tanda kutip saat memasukkan catatan

  5. Mengekstrak, memodelkan, dan mengubah model data, dengan mongoid/mongodb