সার্ভার আবিষ্কার এবং মনিটরিং ইঞ্জিনটি অবচয় করা হয়েছে


96

আমি আমার নোড.জেএস অ্যাপের সাথে মঙ্গুজ ব্যবহার করছি এবং এটি আমার কনফিগারেশন:

mongoose.connect(process.env.MONGO_URI, {
   useNewUrlParser: true,
   useUnifiedTopology: true,
   useCreateIndex: true,
   useFindAndModify: false
}).then(()=>{
    console.log(`connection to database established`)
}).catch(err=>{
    console.log(`db error ${err.message}`);
    process.exit(-1)
})

তবে কনসোলে এটি এখনও আমাকে সতর্কতা দেয়:

অবচয়করণ সতর্কতা: বর্তমান সার্ভার আবিষ্কার ও মনিটরিং ইঞ্জিনটি অবচয় করা হয়েছে, এবং ভবিষ্যতের সংস্করণে সরানো হবে। নতুন সার্ভার ডিসকভার এবং মনিটরিং ইঞ্জিনটি ব্যবহার করতে, মঙ্গোগ্লায়েন্ট কনস্ট্রাক্টরের কাছে} UseUnifiedTopology: true option বিকল্পটি পাস করুন।

সমস্যাটা কি? আমি useUnifiedTopologyআগে ব্যবহার করছিলাম না তবে এখন এটি কনসোলে প্রদর্শিত হবে। আমি এটি কনফিগারেশনে যুক্ত করেছি তবে এটি এখনও আমাকে এই সতর্কতা দেয় কেন? আমিও ব্যবহার করি না MongoClient

সম্পাদনা করুন

ফিলিপ প্লেটস উত্তর হিসাবে মঙ্গুজে একটি সমস্যা হয়েছে এবং তারা এই বাগটি পরবর্তী সংস্করণগুলিতে স্থির করেছে। সুতরাং আপনি মঙ্গুজ সংস্করণ আপডেট করে সমস্যার সমাধান করতে পারেন।

উত্তর:


170

হালনাগাদ

মঙ্গুজ 5.7.1 প্রকাশিত হয়েছিল এবং এটি সমস্যার সমাধান করছে বলে মনে হচ্ছে, সুতরাং useUnifiedTopologyপ্রত্যাশার মতো বিকল্পের কাজটি সেট আপ করা ।

mongoose.connect(mongoConnectionString, {useNewUrlParser: true, useUnifiedTopology: true});

আসল উত্তর

আমি একই সমস্যার মুখোমুখি হয়েছি এবং মঙ্গুজ কোডটিতে গভীর ডুব দেওয়ার সিদ্ধান্ত নিয়েছি: https://github.com/Automattic/mongoose/search?q=useUnifiedTopology&unscoped_q=useUnifiedTopology

মঙ্গুজের ৫.7 সংস্করণে একটি বিকল্প যুক্ত হওয়া এবং এখনও ভালভাবে নথিভুক্ত নয় বলে মনে হচ্ছে। আমি এমনকি এটা পাঠাগারের ইতিহাসে উল্লেখ খুঁজিয়া দিতে পারিতেন না https://github.com/Automattic/mongoose/blob/master/History.md

কোডে একটি মন্তব্য অনুযায়ী:

  • @ পরিম {বুলিয়ান} [অপশনস: ইউজ ইউনাইফাইডটোপোলজি = মিথ্যা] ডিফল্টরূপে মিথ্যা। সেট trueMongoDB ড্রাইভারের প্রতিরূপ সেট জন্য নির্বাচন করুন এবং ইঞ্জিন পর্যবেক্ষণ sharded ক্লাস্টার।

এই ত্রুটিটি সম্পর্কে গিটহাব প্রকল্পে একটি সমস্যাও রয়েছে: https://github.com/Automattic/mongoose/issues/8156

আমার ক্ষেত্রে আমি মঙ্গুজকে প্রতিলিপি সেট বা শার্প ক্লাস্টারে ব্যবহার করি না এবং যদিও বিকল্পটি মিথ্যা হওয়া উচিত। তবে মিথ্যা হলে সেটিংসটি সত্য হওয়া উচিত। একবার সত্য হয় এটি এখনও কাজ করে না, সম্ভবত আমার ডেটাবেস একটি প্রতিরূপ সেট বা শার্প ক্লাস্টারে চালিত হয় না।

আমি ৫..1.১৩ এ ডাউনগ্রেড করেছি এবং আমার প্রকল্পটি আবার ঠিকঠাক হয়ে চলছে। সুতরাং আমি এখনই কেবলমাত্র বিকল্পটি দেখতে পাচ্ছি এটি হ্রাস করা এবং নতুন সংস্করণের জন্য আপডেটটি আপডেট করার জন্য অপেক্ষা করা।


আমি একই (ডাউনগ্রেড সংস্করণ) ভেবেছিলাম, আমি ম্ল্যাব ক্লাস্টারগুলি ব্যবহার করছি তাই সম্ভবত সতর্কতাটি অদৃশ্য হওয়ার কারণ কি?
iLiA

4
5.7.7আপনি যদি এর মতো createConnection()পরিবর্তে ব্যবহার করেন তবে সর্বশেষ মঙ্গুজে একটি বাগ রয়েছে । বিবেচনা করা হবে না এবং আপনি এখনও সতর্কতা পাবেন। আমার সাথে ইভেন্ট এখনও সতর্কতা পেতে। connect()mongoose.createConnection(conString, { useUnifiedTopology: true })useUnifiedTopologymongoose.set('useUnifiedTopology', true)
লুই গ্রেলেলেট

4
5.6.13 এ ডাউনগ্রেড করার পরেও সতর্কতা অব্যাহত রয়েছে
ওডেন ব্রিসেট

4
দেশীয় মঙ্গোডিবি ড্রাইভার ব্যবহার করে আমি ত্রুটিটি পাচ্ছি!
আখিলা

এখানে আমাদের সমস্ত অবমাননাকৃত বিকল্প রয়েছে: মঙ্গুজেজেডস
ডিপ্রেসিভেশনস

27

মঙ্গোডিবিতে তারা বর্তমান সার্ভার এবং ইঞ্জিন নিরীক্ষণ প্যাকেজটিকে অবমূল্যায়ন করেছে, সুতরাং আপনাকে নতুন সার্ভার এবং ইঞ্জিন পর্যবেক্ষণ প্যাকেজ ব্যবহার করতে হবে। সুতরাং আপনি শুধু ব্যবহার

{UseUnifiedTopology: সত্য}

mongoose.connect("paste db link", {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true });

11
আপনি যদি আমার প্রশ্নটি পড়েন, আমি সেখানে উল্লেখ করেছি যে আমি useUnifiedTopology: trueআমার কনফিগারেশনে যুক্ত করেছি এবং এটি এখনও আমাকে সতর্কতা দেখায়
iLiA

4
আমার এই সমস্যাটি ছিল এবং আমি যুক্ত করেছিলাম useUnifiedTopology: trueতবে এখনও কনসোলটিতে একই বার্তা আসছে।
আরএসএ

6
এখনও মেসেজটি পাওয়ার জন্য, mongoose.set('useUnifiedTopology', true)মঙ্গুজ.কনেক্টের আগে কল করার চেষ্টা করুন ।
ডেভলাইফ

হ্যাঁ, এটি সঠিক উত্তর। আপনাকে কেবল "ইউজেনইনফাইড টিপোলজি: সত্য, ইউজ নিউউরল পার্সার: ট্রু" একসাথে pair} জোড়া রেখে দিতে হবে} যদিও আমি "UseCreateIndex: true" ব্যবহার করি নি, তবে এটি আমাকে কিছু ধারণা দেয়। dev4Live এর উপায়ও কাজ করে।
উইলিয়াম হাউ

মঙ্গুজ .কনেক্ট ("ডিবি কান ইউআরএল", {ইউজ ইউনিফায়েডটপোলজি: সত্য, UseNewUllParser: সত্য,}) .থেন (() => কনসোল.লগ ('মংগোডিবি সংযুক্ত!')) .ক্যাচ (err => {err => কনসোল .log (ভুল) me) এটি আমার জন্য কাজ করেছিল
সংকেত সোনাভেনে

9

এটি আমার সমস্যার সমাধান করেছে।

 const url = 'mongodb://localhost:27017';

 const client = new MongoClient(url, {useUnifiedTopology: true});

উত্তরের জন্য ধন্যবাদ, তবে এটি মঙ্গস প্রশ্ন, এবং আমি মঙ্গোক্লিয়েন্ট ব্যবহার করছি না
iLiA

4
@ iLiA আপনি স্বাগত জানাই। হ্যা আমি জানি. তবে এই উত্তরটি কারও পক্ষে সহায়ক হতে পারে, যেহেতু আমি আপনার প্রশ্নটি ঠিক শিরোনামের বিষয় হিসাবে পেয়েছি এবং সামগ্রী দ্বারা নয় (এবং আপনার প্রশ্নের বিষয়বস্তু মঙ্গোস্লায়েন্ট সম্পর্কে সাধারণ তথ্যের খুব কাছাকাছি)
Светлов

3

আপনি async অপেক্ষা করার চেষ্টা করতে পারেন

const connectDB = async () => {
    try {
        await mongoose.connect(<database url>, {
            useNewUrlParser: true,
            useCreateIndex: true,
            useUnifiedTopology: true,
            useFindAndModify: false
        });
        console.log("MongoDB Conected")
    } catch (err) {
        console.error(err.message);
        process.exit(1);
    }
};


{UseUnifiedTopology: সত্য}
নিরান ইউসুফ

3

এই ত্রুটি এড়াতে নিম্নলিখিত কোডটি ব্যবহার করুন

MongoClient.connect(connectionString, {useNewUrlParser: true, useUnifiedTopology: true});

2
mongoose.connect('mongodb://localhost:27017/Tododb', { useNewUrlParser: true, useUnifiedTopology: true });

নিম্নলিখিত ত্রুটিগুলি মুছে ফেলবে: -

(নোড: 8৪৮১) অবমূল্যায়ন সতর্কতা: বর্তমান ইউআরএল স্ট্রিং পার্সার হ্রাস করা হয়েছে, এবং ভবিষ্যতের সংস্করণে সরানো হবে। নতুন পার্সারটি ব্যবহার করতে, বিকল্পটি ব্যবহার করুন {useNewUllParser: সত্য Mong থেকে মঙ্গোক্লিয়েন্টকোনেক্ট nect

(নোড: 8৪৮১) অবমূল্যায়ন সতর্কতা: বর্তমান সার্ভার আবিষ্কার ও মনিটরিং ইঞ্জিনটি হ্রাস করা হয়েছে, এবং ভবিষ্যতের সংস্করণে সরানো হবে। নতুন সার্ভার ডিসকভার এবং মনিটরিং ইঞ্জিনটি ব্যবহার করতে, মঙ্গোগ্লায়েন্ট কনস্ট্রাক্টরের কাছে} UseUnifiedTopology: true option বিকল্পটি পাস করুন।


4
useUnifiedTopology: trueমঙ্গোডিবি ব্যবহার করে এমন সমস্ত নির্ভরতা যুক্ত করার বিষয়টিও নিশ্চিত করুন , আমার ক্ষেত্রে আমি ব্যবহার wiston-mongodbকরছিলাম আমাকে এটি বিকল্পটিতেও যুক্ত করতে হয়েছিল winston.add(new winston.transports.MongoDB({ db: config.get('db'), options: { useUnifiedTopology: true } }));
মুসিকিংলা

@ গেলমুসিকিংলা এই আমার সমস্যা ছিল। এটি নির্দেশ করার জন্য ধন্যবাদ
akmalhakimi1991

@ গেলমুসিকিংলা, আমার জীবন বাঁচানোর জন্য ধন্যবাদ। ❤️
👏

@ মিঃ এসপি শুভ দয়া করে উত্সাহিত করুন
হাসান আলী শাহজাদ

2

যোগ useUnifiedTopology বিকল্প এবং এটি সেট সত্য

মংগস.কনেক্ট বিকল্পগুলির অন্যান্য 3 টি কনফিগারেশন সেট করুন যা অন্যান্য অবশিষ্ট অবক্ষয় ওয়ার্নিংয়ের সাথে ডিল করবে ।

এই কনফিগারেশনটি আমার পক্ষে কাজ করে!

const url = 'mongodb://localhost:27017/db_name';
mongoose.connect(
    url, 
    { 
        useNewUrlParser: true, 
        useUnifiedTopology: true,
        useCreateIndex: true,
        useFindAndModify: false
    }
)

এটি 4 অবনতি ওয়ার্নিং সমাধান করবে ।

  1. বর্তমান ইউআরএল স্ট্রিং পার্সার হ্রাস করা হয়েছে, এবং ভবিষ্যতের সংস্করণে সরানো হবে। নতুন পার্সারটি ব্যবহার করতে, বিকল্পটি ব্যবহার করুন {useNewUllParser: সত্য Mong থেকে মঙ্গোক্লিয়েন্টকোনেক্ট nect
  2. বর্তমান সার্ভার আবিষ্কার ও মনিটরিং ইঞ্জিনটিকে অবহেলা করা হয়েছে এবং ভবিষ্যতের সংস্করণে সরানো হবে। নতুন সার্ভার ডিসকভার এবং মনিটরিং ইঞ্জিনটি ব্যবহার করতে, মঙ্গোগ্লায়েন্ট কনস্ট্রাক্টরের কাছে} UseUnifiedTopology: true option বিকল্পটি পাস করুন।
  3. কালেকশন.সেনিউর ইন্ডেক্স হ্রাস করা হয়েছে। পরিবর্তে createIndexes ব্যবহার করুন।
  4. অবমানন সতর্কতা: মঙ্গুজ: findOneAndUpdate()এবং মিথ্যাতে সেট করা বিকল্প findOneAndDelete()ব্যতীত useFindAndModifyহ্রাস করা হয়। দেখুন: https://mongoosejs.com/docs/deprecations.html#-findandmodify-

আশা করি এটা সাহায্য করবে.


1
const mongoose = require("mongoose");

mongoose.connect('mongodb://localhost:27017/Edureka',{ useNewUrlParser: true, useUnifiedTopology: true }, (error)=> {
    const connectionStatus = !error ? 'Success': 'Error Connecting to database';
    console.log(connectionStatus);
});

1

যদি আপনার কোডে কোনও কারণে createConnetion অন্তর্ভুক্ত থাকে (আমার ক্ষেত্রে আমি গ্রিডফস স্টোরেজ ব্যবহার করছি), আপনার কোডটিতে নিম্নলিখিতগুলি যুক্ত করার চেষ্টা করুন:

    options: {
        useUnifiedTopology: true,
    }

ঠিক এই ফাইলের পরে:

    const storage = new GridFsStorage({
    url: mongodbUrl,
    file: (req, file) => {
        return new Promise((resolve, reject) => {
            crypto.randomBytes(16, (err, buf) => {
                if (err) {
                    return reject(err);
                }
                const filename = buf.toString('hex') + path.extname(file.originalname);
                const fileInfo = {
                    filename: filename,
                    bucketName: 'uploads'
                };
                resolve(fileInfo);
            });
        });
    },
    options: {
        useUnifiedTopology: true,
    }
})

যদি আপনার কেসটি আমার মতো মনে হয় তবে এটি অবশ্যই আপনার সমস্যা সমাধান করবে। শ্রদ্ধা


0

আমিও একই সমস্যার মুখোমুখি ছিলাম:

  1. টার্মিনালে নিম্নলিখিতটি চালিয়ে আমি মোঙ্গোডিবিতে সংযুক্ত হওয়ার বিষয়টি নিশ্চিত করেছিলাম:

    brew services start mongodb-community@4.2
    

    এবং আমি আউটপুট পেয়েছি:

    Successfully started `mongodb-community`
    


Https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ বা https://www.youtube.com/watch?v=IGIcrMTtjoU এ মংডোব ইনস্টল করার জন্য নির্দেশাবলী

  1. আমার কনফিগারেশনটি নিম্নরূপ ছিল:

    mongoose.connect(config.mongo_uri, {
        useUnifiedTopology: true,
        useNewUrlParser: true})
        .then(() => console.log("Connected to Database"))
        .catch(err => console.error("An error has occured", err));
    

যা আমার সমস্যার সমাধান!


0
   const mongo = require('mongodb').MongoClient;

   mongo.connect(process.env.DATABASE,{useUnifiedTopology: true, 
   useNewUrlParser: true}, (err, db) => {
      if(err) {
    console.log('Database error: ' + err);
   } else {
    console.log('Successful database connection');
      auth(app, db)
      routes(app, db)

   app.listen(process.env.PORT || 3000, () => {
      console.log("Listening on port " + process.env.PORT);
    });  

}});


0

মংগুজ সংযোগের ব্যবহার সেট করা হয়েছে ইউনাইটেড টপোলজি: সত্য বিকল্প

  import mongoose from 'mongoose';

        const server = '127.0.0.1:27017'; // REPLACE WITH YOUR DB SERVER
        const database = 'DBName'; // REPLACE WITH YOUR DB NAME
        class Database {
          constructor() {
            this._connect();
          }
          _connect() {
            mongoose.Promise = global.Promise;
            // * Local DB SERVER *
            mongoose
              .connect(`mongodb://${server}/${database}`, {
                useNewUrlParser: true,
                useCreateIndex: true,
                useUnifiedTopology: true
              })
              .then(
                () => console.log(`mongoose version: ${mongoose.version}`),
                console.log('Database connection successful'),
              )
              .catch(err => console.error('Database connection error', err));   
          }
        }
        module.exports = new Database();

0

আমি এই থ্রেডটিতে যুক্ত করতে চাই যা এটি অন্যান্য নির্ভরতাগুলির সাথেও করতে পারে।

উদাহরণস্বরূপ, নোডজেএস, মঙ্গোডিবি বা মঙ্গুজের জন্য আমি আপডেট করা বা সেট করা কিছুই হ'ল সমস্যাটি - তবে - connect-mongodb-sessionআপডেট হয়েছিল এবং একই ত্রুটিটি স্লিং করা শুরু করেছিল। এই ক্ষেত্রে সমাধানটি ছিল কেবল সংস্করণ connect-mongodb-sessionথেকে অন্য সংস্করণে রোলব্যাক 2.3.0করা 2.2.0

এখানে চিত্র বর্ণনা লিখুন


0

প্রতিবার পপ আপ করতে আমার একই ত্রুটি হয়েছিল এবং এটি আমার পক্ষে কাজ করে

mongoose.connect("mongodb://localhost:27017/${yourDB}", {
    useNewUrlParser: true,
    useUnifiedTopology: true

}, function (err) {
    if (err) {
        console.log(err)
    } else {
        console.log("Database connection successful")
    }
});

0

এই লাইনটি ব্যবহার করুন, এটি আমার জন্য কাজ করেছে

mongoose.set('useUnifiedTopology', true);

4
সম্ভব হলে, কেবল কোডের পরিবর্তে অতিরিক্ত ব্যাখ্যা দেওয়ার জন্য চেষ্টা করুন make এগুলির উত্তরগুলি আরও কার্যকর হতে পারে কারণ তারা সম্প্রদায়ের সদস্যদের এবং বিশেষত নতুন বিকাশকারীদের সমাধানের যুক্তি আরও ভালভাবে বুঝতে সহায়তা করে এবং ফলো-আপ প্রশ্নগুলির সমাধানের প্রয়োজনীয়তা রোধ করতে সহায়তা করে।
রাজন

0

আপনি যদি কোনও মঙ্গোডিবি সার্ভার ব্যবহার করছেন তবে সংযুক্ত হওয়ার পরে এবং ইউআরএল সন্ধানের ক্লাস্টার ক্লকটিতে সংযুক্তি ব্যবহারের পরে, ইউআরএল কিছুটা এমন হবে

<mongodb+srv://Rohan:<password>@cluster0-3kcv6.mongodb.net/<dbname>?retryWrites=true&w=majority>

এই ক্ষেত্রে, আপনার ডাটাবেস পাসওয়ার্ড এবং ডিবি নাম দিয়ে পাসওয়ার্ডটি প্রতিস্থাপন করতে ভুলবেন না এবং তারপরে ব্যবহার করুন

const client = new MongoClient(url,{useUnifiedTopology:true});

0
mongoose.connect("DBURL", {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true },(err)=>{
    if(!err){
         console.log('MongoDB connection sucess');
        }
    else{ 
        console.log('connection not established :' + JSON.stringify(err,undefined,2));
    }
});

সম্ভব হলে, কেবল কোডের পরিবর্তে অতিরিক্ত ব্যাখ্যা দেওয়ার জন্য চেষ্টা করুন make এগুলির উত্তরগুলি আরও কার্যকর হতে পারে কারণ তারা সম্প্রদায়ের সদস্যদের এবং বিশেষত নতুন বিকাশকারীদের সমাধানের যুক্তি আরও ভালভাবে বুঝতে সহায়তা করে এবং ফলো-আপ প্রশ্নগুলির সমাধানের প্রয়োজনীয়তা রোধ করতে সহায়তা করে।
রাজন

0

এটি সহজ, আপনি যে কোডটি ব্যবহার করেছেন তা সরিয়ে ফেলুন এবং নীচের কোডটি ব্যবহার করুন:

const url = 'mongodb://localhost:27017';
var dbConn = mongodb.MongoClient.connect(url, {useUnifiedTopology: true});

0

আপনি যদি টাইপ স্ক্রিপ্টটি মঙ্গো অধ্যায়গুলিতে যুক্ত কনফিগার ব্যবহার করেন

const MongoOptions: MongoClientOptions = {
  useNewUrlParser: true,
  useUnifiedTopology: true,
};

      const client = await MongoClient.connect(url, MongoOptions);

if you not used typescript  
const MongoOptions= {
  useNewUrlParser: true,
  useUnifiedTopology: true,
};

0

আপনার মঙ্গোদ কমান্ডটি চালানো এবং সার্ভারটি চালিয়ে রাখা গুরুত্বপূর্ণ। যদি তা না হয় তবে আপনি এখনও এই ত্রুটিটি দেখতে পাচ্ছেন।

আমি আপনাকে আমার কোড সংযুক্ত করি:

const mongodb = require('mongodb')
const MongoClient = mongodb.MongoClient

const connectionURL = 'mongodb://127.0.0.1:27017'
const databaseName = 'task-manager'

MongoClient.connect(connectionURL, {useNewUrlParser: true, useUnifiedTopology: true}, (error, client) => {
    if(error) {
        return console.log('Error connecting to the server.')
    }

    console.log('Succesfully connected.')
})


-1

এটি আমার পক্ষে কাজ করেছে

লোকেরা MongoClientচেষ্টা করে দেখুন :

MongoClient.connect(connectionurl, 
  {useUnifiedTopology: true, useNewUrlParser: true},  callback() {

মঙ্গুজের জন্য:

mongoose.connect(connectionurl, 
         {useUnifiedTopology: true, useNewUrlParser: true}).then(()=>{

অন্যান্য সংযোগঅ্যাপশনগুলি সরান


4
আমি স্বীকার করেছি যে আমি মঙ্গোস্লায়েন্ট ব্যবহার করছি না
iLiA
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.