मैंने हाल ही में अपने वरिष्ठ प्रोजेक्ट के लिए एक ऐप विकसित करना शुरू किया है जिसके लिए मुझे किसी प्रकार के डेटाबेस का उपयोग करने की आवश्यकता है। उसके लिए मैंने मोंगोज़ के साथ जाने का फैसला किया क्योंकि यह नोएसक्यूएल है और इसे उठाना थोड़ा आसान है।

तो, तेजी से आगे बढ़ें और मैं एक समस्या में भाग लेता हूं जहां मैं यह नहीं समझ सकता कि पहले से मौजूद स्कीमा को कैसे संपादित किया जाए और इसमें नई कुंजी जोड़ें।

उदाहरण के लिए, मेरे पास यह स्कीमा है जो एक पोस्ट का प्रतिनिधित्व करती है (ट्वीट या फेसबुक पोस्ट सोचें) जिसमें:

  • एक स्ट्रिंग जो पोस्ट के शरीर को धारण करती है
  • पोस्ट बनाने वाले उपयोगकर्ता की आईडी
  • वह तिथि जब पद सृजित किया गया था

उसके लिए मेरा कोड है:

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

// Create Schema
const PostsSchema = new Schema({
  Value: {
    type: String,
    required: true
  },
  User: {
    type: Schema.Types.ObjectId,
    ref:'users'
  },
  Date: {
    type: Date,
    default: Date.now
  }
});

// Create collection and add schema
mongoose.model('posts', PostsSchema, 'posts');

अब मैं जो चाहता हूं वह उस स्कीमा को किसी तरह से एक्सेस करना है और शायद कुछ इसी तरह का उपयोग करके इसमें एक नई कुंजी जोड़ना है

PostsSchema.add({Private: { default: false}});

मतलब कि, अब डेटाबेस में स्कीमा कुछ इस तरह दिखेगा:

{
    "_id": {
        "$oid": "1831g98af21n9s5u7s9ccchj5"
    },
    "Value": "Beautiful day outside, can't wait to go jogging!",
    "User": {
        "$oid": "9a79ab143lbk9lk55wq327oi3226m"
    },
    "Date": {
        "$date": "2018-10-29T01:28:44.408Z"
    },
    "Private":  "false"
    "__v": 0
}

तो वापस मेरे प्रश्न पर, क्या ऐसा करने का कोई तरीका है? या यदि आपके पास ऐसी विधियों के दस्तावेज़ीकरण का लिंक है तो मैं इसकी बहुत सराहना करूंगा। बहुत बहुत धन्यवाद!

0
Jas Singh 9 नवम्बर 2018, 05:13

1 उत्तर

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

बस एक default के साथ स्कीमा में फ़ील्ड जोड़ें:

const PostsSchema = new Schema({
  Value: {
    type: String,
    required: true
  },
  User: {
    type: Schema.Types.ObjectId,
    ref:'users'
  },
  Date: {
    type: Date,
    default: Date.now
  },
  Private: {type: Boolean, default: 'false'}
});

चूंकि आपके पास default कोई भी नया रिकॉर्ड होगा और साथ ही आपके द्वारा private फ़ील्ड जोड़ने से पहले सहेजे गए पुराने मॉडल का कोई भी नया उदाहरण होगा।

यदि आपको वास्तव में अधिक dynamic दृष्टिकोण की आवश्यकता है, तो सामान्य अनुशंसा मिश्रित प्रकार का उपयोग करना है। इसके साथ आने वाले सभी प्लसस और माइनस के साथ।

0
Akrion 9 नवम्बर 2018, 04:29