एक ट्यूटोरियल में मैंने इस तरह एक कोड देखा:

var session = require('express-session');
var FileStore = require('session-file-store')(session);

और इस तरह एक और कोड:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

लेकिन मुझे लगता है कि मैं इस तरह पहला कोड लिख सकता हूं:

var sessionFileStore = require('session-file-store');
var FileStore = sessionFileStore.session;

और दूसरा पसंद है:

var Schema = require('mongoose')(Schema);

या

var Schema = require('mongoose').Schema;

मैं सिर्फ यह सुनिश्चित करना चाहता था कि क्या ये दोनों तरह के लेखन समान हैं या कुछ अंतर हैं?

मुझे यह भी जानना अच्छा लगता है कि अगर मैं दूसरे आदेश के लिए नीचे की तरह कुछ उपयोग करता हूं तो अर्थ/अंतर क्या है:

var Schema = require('mongoose')('Schema');
4
Hasani 29 जिंदा 2020, 12:32

1 उत्तर

सबसे बढ़िया उत्तर

यह समान हे। require एक सामान्य फ़ंक्शन है, जो एक मान देता है। इसलिए, यदि वह मान भी एक फ़ंक्शन है, तो आप इसे तुरंत कॉल कर सकते हैं, या इसके गुणों में से किसी एक का उपयोग कर सकते हैं यदि यह कोई वस्तु है।

हालांकि, दूसरे मामले में, require('mongoose')(Schema) दो त्रुटियां पैदा करेगा:

  1. यहां require एक ऑब्जेक्ट देता है, फ़ंक्शन नहीं, इसलिए आप इसे लागू नहीं कर सकते।
  2. आप वेरिएबल Schema का उपयोग कर रहे हैं जिसे अभी तक परिभाषित नहीं किया गया है, और इसे किसी फ़ंक्शन के तर्क के रूप में पास कर रहे हैं।

दूसरे मामले में, इसे एक पंक्ति में रखने का सही तरीका है var Schema = require('mongoose').Schema;

और पहले मामले में, मुझे लगता है कि सही तरीका है var FileStore = sessionFileStore(session); मैं यहां मानता हूं session एक वैश्विक चर है, या पहले परिभाषित किया गया है।

4
Oscar Paz 29 जिंदा 2020, 12:37