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

Tamim Fahed

الأعضاء
  • المساهمات

    124
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    1

أجوبة بواسطة Tamim Fahed

  1. أحاول استخدام تابع الترتيب sort لترتيب نتائج الاستعلام من خلال استخدام المكتبة pymongo ولكن يظهر لدي الخطأ التالي:

    Traceback (most recent call last):
      File "find_ow.py", line 7, in <module>
        for message in db.messages.find({}, {'users.username':1}).sort({'users.username':1},1):
      File "/Library/Python/2.6/site-packages/pymongo-2.0.1-py2.6-macosx-10.6-universal.egg/pymongo/cursor.py", line 430, in sort
      File "/Library/Python/2.6/site-packages/pymongo-2.0.1-py2.6-macosx-10.6-universal.egg/pymongo/helpers.py", line 67, in _index_document
    TypeError: first item in each key pair must be a string

    وهذا هو الكود:

    import pymongo
    from  pymongo import Connection
    connection = Connection()
    db = connection.myDB
    for message in db.messages.find({}, {'users.username':1}).sort({'users.username':1}):
        print message

    ولكن نفس الاستعلام قمت بتنفيذه في mongodb وحصلت على النتائج دون أي خطأ. فما هي المشكلة هنا؟

  2. لقد قمت بكتابة الاستعلام التالي للحصول على مستندات فيها مستندات أخرى كقيمة لحقل معيّن nested object:

    chat.find( { message : { from: "test1" } } )

    وقمت بكتابة نفس الاستعلام ولكن باستخدام المسارات  ( علامة النقطة . ) كالتالي:

    chat.find( { 'message.from': "test1" }  )

    ولكن كل استعلام أعطى نتيجة مختلفة عن الآخر، فالاستعلام الأول لم يقم بإعادة أي نتيجة أما الاستعلام الثاني أعاد 10 نتائج.

    أليس من المفترض أن أحصل على نفس النتيجة في كلتا الحالتين؟ فباستخدام dot notation تم الوصول إلى نفس الحقل from

  3. عندما أقوم بتشغيل خادم الويب من خلال nodemon تظهر لدي أخطاء متعلّقة بالاتصال بقاعدة البيانات mongodb:

    DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. 
    To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
    Warning { MongoError: failed to connect to server [mongodb:27017] on first connect
        at Pool.<anonymous> (/Users/michaelks/Desktop/users/node_modules/mongodb-core/lib/topologies/server.js:325:35)
        at emitOne (events.js:96:13)
        at Pool.emit (events.js:188:7)
        at Connection.<anonymous> (/Users/michaelks/Desktop/users/node_modules/mongodb-core/lib/connection/pool.js:270:12)
        at Connection.g (events.js:292:16)
        at emitTwo (events.js:106:13)
        at Connection.emit (events.js:191:7)
        at Socket.<anonymous> (/Users/michaelks/Desktop/users/node_modules/mongodb-core/lib/connection/connection.js:173:49)
        at Socket.g (events.js:292:16)
        at emitOne (events.js:96:13)
        at Socket.emit (events.js:188:7)
        at connectErrorNT (net.js:1025:8)
        at _combinedTickCallback (internal/process/next_tick.js:74:11)
        at process._tickCallback (internal/process/next_tick.js:98:9)
      name: 'MongoError',
      message: 'failed to connect to server [mongodb:27017] on first connect' }

    وكود الاتصال بقاعدة البيانات هو التالي:

    MongoClient.connect(myURL, { useNewUrlParser: true }, (err, db) => {
        if (err) throw err;
        console.log('connected successfully to the database');
        db.close();
    });

    ماهو حل هذه المشكلة؟

  4. بعد أن قمت بتحميل mongodb وعندما أقوم بتنفيذ الأمر mongod من محرر الأوامر أحصل على الخطأ التالي:

    exception in initAndListen: NonExistentPath: Data directory C:\data\db\ not found. Create the missing directory or specify another path using (1) the --dbpath command line option, or (2) by adding the ‘storage.dbPath’ option in the configuration file., terminating

    وحاولت إنشاء المجلّد data\db بشكل يدوي في المسار ولكن مازال الخطأ نفسه. كيف يمكنني حل المشكلة؟

  5. لدي مجموعة كبيرة من البيانات. عند استخدام mongoose في node.js وبالاستعلام find أرغب بالحصول على النتائج بهئية صفحات حتى لا يتم إرسال كافة البيانات دفعة واحدة إلى المستخدم

    كيف يمكنني إضافة حد معيّن لعدد النتائج التي سيتم استعادتها بشكل مشابه ل "LIMIT 50,100" في قواعد بيانات SQL. وكيف يمكنني أيضاً تطبيق مبدأ pagination وتمرير هذه القيم بشكل متغيرات إلى الاستعلام؟

  6. أقوم باستخدام mongoose للتعامل مع قاعدة بيانات mongodb، ولقد قمت بإنشاء هيكلية جدول المستخدم كالتالي:

    var userSchema = new mongoose.Schema({
    	info: {
            email : { type: String, require: true, unique: true },
            password: { type: String, require:true },
    	}
    });
    
    var User = mongoose.model('User',userSchema);
    
    module.exports = User;

    وهذا هو كود إضافة مستند جديد:

    user({'info.email' : req.body.email, 'info.password' : req.body.password}).save(function(error, result){
        if(error)
            res.send(error);
        else {
            res.send({"msg":"saved success"});
        }
    });

    ولكن عند الإضافة أحصل على الخطأ التالي:

    {"name":"MongoError","code":11000,"err":"insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.users.$email_1  dup key: { : null }"} 

    مع العلم أنه ليس لدي أي بيانات متشابهة ضمن المجموعة، كيف يمكنني حل هذه المشكلة؟

  7. عادةً عندما أرغب بالاطلاع على بنية مستند ما أقوم بإجراء استعلام عشوائي لإظهار الحقول الموجودة وأنواع البيانات. ولكن أرغب الآن بالحصول على اسماء جميع الحقول الموجود في مستند ما، فرضاً أن لدي الحقول التالية ضمن المستندات:

    { gen : ['comedy', 'action'] },
    { year : 2006 },
    { type : 'New' },
    { tags : ['AC','BB','COM']  }

    هل يوجد طريقة استطيع من خلالها طباعة فقط اسماء هذه الحقول أي (gen, year, type, tags)؟ لأنني لا أريد الحصول على القيم بداخلها فقط اسماء الحقول.

  8. لدي مجموعة من المستندات والتي تحوي ضمنها أغراض objects أخرى بالهيئة التالية:

    { 
        email: 'test@test.com',
        attributes: {
            ips: ['127.0.0.1','193.82.143.12','122.13.240.5'],
            serial: 1122334,
            role: 'user'
        }
    }

    حاولت استخدام التابع $unset للقيام بحذف حقل فرعي من الغرض attributes، لكنه يتم تطبيقه فقط على الحقول الأساسية للمستند ولا أستطيع من خلاله الوصول إلى حقول فرعية.

    كيف أستطيع الوصول وحذف الحقل ips من جميع مستندات هذه المجموعة؟

  9. لدي جزء من متحكّم controller في لارافيل أريد أن يقوم بتنفيذ أو استدعاء سكريبت مكتوب بلغة بايثون،

    بفرض لدي سكريبت بايثون موجود في المسار التالي، حاولت إيجاد الأمر المناسب للاستدعاء:

    public function fire()
    {
        $this->call('C:\Python34\python H:\myapp\app\python\questionPopulator.py');
    }
    
    
    public function fire()
    {
        $this->line('C:\Python34\python H:\myapp\app\python\questionPopulator.py');
    }

    ولكنها لم تجدي لأن لارافيل يتوقع استدعاء أمر آخر في لارافيل أيضاً وليس بايثون، ماهي الطريقة المناسبة لذلك؟

  10. بتاريخ 49 دقائق مضت قال محمد أيت لعرايك:

    // pormises هنا يجب أن نجبر البرنامج على التوقف حتى نهاية جميع const details = await Promise.all(promises)

    مع تعديل الكود إلى هذا الشكل لم يتم التعرف على المتغيّر promises خارج الحلقة وظهر الخطأ التالي:

    promises is not defined

  11. استخدم node js من طرف السيرفر ولدي حلقة تقوم بإنشاء اتصال socket IO مع سيرفر آخر ويجب انتظار النتيجة ثم تنفيذ باقي التعليمات وتكرار الحلقة. ولكن ذلك لا يحصل.

    هذا هو الكود:

    exports.placeOrders = async (socket, orders) => {
    	for await (order of orders){ 
            console.log("Order ID: " + order.id);   
    
    		socket.emit('requestOrderDetails', order.id);
    
             await socket.on('getDetails' , async (response) => {
                     console.log("order details:" + response);
    
    				await .. 
    				await ..
    
    
                 })
    
    		}
    	console.log("Process Finished);
    }
        

    الحلقة تقوم بالمرور على الطلبات orders وعند كل طلب تقوم بجلب باقي التفاصيل من السيرفر الآخر عن طريق socket.

    ولكن بدلاً من الحصول على النتائج بالترتيب أحصل على التالي:

    Order ID:
    
    Process Finished
    
    Order details:
    
    ولكن الترتيب الصحيح هو
    1-order ID
    2-order details
    3-process finished

    حاولت استخدام for await وأيضاً حلقة for العادية ولكن نفس النتيجة. ما الحل؟

  12. التطبيق لديه اتصال مع redis باستخدام مكتبة predis في لارافيل. وقمت بإنشاء الاتصال كالتالي في config

    $redis = Redis::connection('my-connection');

    حاولت إضافة اتصال آخر بنفس الطريقة ووضعهم في مصفوفة:

    config(['database.redis.new-connection' => [  
            'host' => '185.112.2.2',
            'password' => 'secret',
            'port' => '6379',
            'database' => 0
          ] 
    	],
    	['database.redis.new-connection2' => [  
            'host' => '185.112.2.3',
            'password' => 'secret3',
            'port' => '6376',
            'database' => 0
          ] 
    	],
    	);

    ولكن يبقى الاتصال الأول فقط ولا يتم التعرف على الاتصال الثاني

  13. السلام عليكم

    انا استخدم لارافل ولدي هذه القيم استعيدها من قاعدة البيانات

    [{"ref":"01","hold":"1","temp":["OK"]},{"ref":"01","hold":"2","temp":["Hot"],{"ref":"02","hold":"33","temp":["Hot"]}

    كيف يمكن ان احولها الى هذى الشكل

    "01" : ["OK","HOT"]

    يعني أدمج في حال كان اكثر من عنصر له نفس قيمة ref

  14. السلام عليكم

    أقوم حاليا بتصميم موقع باستخدام node js ومع استخدام قاعدة البيانات مايسيكوال.
    سؤالي هو كيف يمكنني استخدام الأداة لإنشاء صف والاتصال بقاعدة البيانات لاستدعائه في الصفوف الأخرى؟ في حال كانت قاعدة البيانات موجودة على جهازي أو على مخدم خارجي

  15. شكراً للرد،
    ولكن المشكلة هي بجدولة الصفقات،
    أي يجب على البائع إنشاء صفقة واحدة وجدولتها (اسبوعياً مثلاً).
    ثم يجب على الصفقة أن تبدأ باستقبال طلبات الشراء مباشرة ولمدة اسبوع وعند انتهاء تاريخ الصفقة يجب تلقائياً إنشاء صفقة جديدة بنفس مواصفات هذه الصفقة للاسبوع المقبل وهكذا.

    هل هنالك بنية أفضل لقاعدة البيانات أو كود بسيط كمثال لتحقيق ذلك؟


    شكراً
     

  16. السلام عليكم،
    انني اقوم ببناء موقع الكتروني لمزاد بواسطة لارافيل.. بحيث يقوم البائع بإنشاء عرض البيع ويستطيع المستخدمين وضع اسعار شرائهم على هذا العرض.

    الآلية هي كالتالي: 

    يقوم البائع بإنشاء صفقته ووضع جدولة لها ( أي الوقت الذي سينتهي فيه استقبال طلبات الشراء أو الاسعار) وهي: يومياً، او اسبوعياً، او شهرياً.


    المشكلة هي أن البائع عند إنشائه للعرض يجب أن يقوم بجدولته بحيث يتم إنهاء هذه الصفقة ضمن الموقع حسب الجدولة التي اختارها مثلاً (يومياً في وقت محدد، اسبوعياً في أيام وأوقات محددة، شهرياً في أيام و أوقات محددة) ومن ثم يجب إعادة فتح نفس العرض(نسخة جديدة منه) تلقائياً بعد الانتهاء. وأيضاً يجب أن تكون جميع العروض متاحة ضمن الموقع خلال الشهر الحالي، أي يجب ان يستطيع المستخدم وضع اسعاره على أي عرض مجدول خلال هذا الشهر وليس فقط أقرب عرض.

    كيف يمكنني تنفيذ ذلك باستخدام لارافل schedule? وما هي أفضل بنية لقاعدة البيانات لذلك؟

    شكراً لكم

     

     

  17. السلام عليكم،
    أنا استخدم استضافة VPS ولدي موقع ونطاق مربوط به على السرفر، كيف يمكنني إنشاء نطاق فرعي لاستضافة موقع آخر على نفس السرفر؟ مع العلم أنني استعمل Nginx داخل السرفر ونظام التشغيل هو لينكس

    جزاكم الله خيرا
     

×
×
  • أضف...