اذهب إلى المحتوى

السؤال

نشر

أنا أقوم بتطوير تطبيق يشبه تويتر باستخدام Node.js حيث أستخدم Mongoose (الإصدار 8.0.2) للتفاعل مع قاعدة بيانات MongoDB Atlas، ولكن ومع واجهت خطأ "MongoServerError: Invalid namespace specified 'Twitter/.users'" عند محاولة إجراء عمليات باستخدام نماذج Mongoose الخاصة بي.

وذلك هو النموذج المستخدم في Mongoose:

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
    username: String,
    password: String,
    email: String,
    registerDate: Date
});

module.exports = mongoose.model('User', userSchema);

اتصال قاعدة البيانات: استخدم سلسلة الاتصال التالية للاتصال بقاعدة بيانات MongoDB Atlas:

mongoose.connect("mongodb+srv://[username]:[password]@[cluster].mongodb.net/Twitter/?retryWrites=true&w=majority", { useNewUrlParser: true, useUnifiedTopology: true });

على الرغم من اتباع الممارسات الصحيحة، إلا أنني أحصل على الخطأ المذكور، والأمر غريب لأنه لا يوجد إشارة مباشرة إلى .users في كودي.

لقد جربت الآتي دون نجاح:

  1. التأكد من أن اسم قاعدة البيانات صحيح في واجهة تحكم Atlas.
  2. التحقق المزدوج من أسماء المجموعات وتعريفات النماذج.
  3. البحث في مجمل كودي للعثور على أي إشارات عرضية إلى .users.

أشتبه أنه قد يكون ذلك متعلقًا بكيفية تفاعل Mongoose مع MongoDB Atlas، ولكنني غير متأكد من ما الذي يسبب هذه المشكلة أو كيفية حلها.

Recommended Posts

  • 0
نشر

أهلا بك.

يوجد عدة مشاكل في الكود الخاص بك، قم بحلها وستحل المشكلة:

  • قم بنقل ال connection string (سلسلة الاتصال) الى ملف منفصل سمه .env في المجلد الرئيسي للمشروع (أي في مجلد المشروع ودون الدخول الى مجلدات أخرى) وقم بتعريف متغير يحوي سلسلة الاتصال دون اشارات التنصيص.
  • قم بعدها باستبدال ال username وال password وال cluster بالبيانات الخاصة بك في mongodb atlas في سلسلة الاتصال.

هذا مثال لشكل المتغير الذي ستفرضه في ملف ال .env، والذي يحوي سلسلة الاتصال:

MONGODB_URI = mongodb+srv://admin:HclgxBqo79UwVrGZ@cluster0.c9xnt4c.mongodb.net/AppDB

وهذه طريقة اسدعائه:

mongoose.connect(process.env.MONGODB_URI)

جرب هذا الحل وستتصل بقاعدة البيانات بنجاح.

ملاحظة: لاتنسى وضع اسم قاعدة البيانات الخاصة بك في نهاية سلسلة الاتصال.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...