[Mongodb] Hỏi về việc disconnect mongodb


  • Angel

    @Nguyen-Hien e thấy hơi khó hình dung tí. Hiện tại em đang thiết kế như này: 0_1540797224832_image.png

    Lúc trước cũng thấy nó hơi sida muốn chuyển qua model nhưng k biết chuyển thế nào. Vì đang muốn mở connection ở mỗi request và close luôn sau request đó.


  • Angel

    @Bảo-Trần-Sỹ cái này hình như là tự động connect lại db ạ?.
    Mình đang muốn là mở connection ở mỗi request và close luôn sau request đó. Có hàm nào kiểu đó k nhỉ?




  • Angel

    @Bảo-Trần-Sỹ ừm mình cũng đang sử dụng hàm disconnect và mọi thứ diễn ra bình thường rồi, nhưng cái mình muốn hỏi ở đây là đặt phần connect và disconnect db ở đâu cho hợp lý, vì như hình ở trên thì mình thấy thiết kế nó hơi rườm rà. Bạn có tài liệu hay link tham khảo nào về phần này k ạ?



  • @Nos-Gnoh Thường theo mình thấy ko ai cứ để trong chỗ gateway mình query đâu. Bạn nên để trong cái hook default cảu cả hệ thống modle bạn á. Mỗi lần có 1 action nào dó với db thfi init connection . Sau đó thì close. Nó work behind the scene thôi. Chứ như trên bạn viết sẽ rất nhiều chỗ. Rồi nhiều lúc quên. Etc =.=. Lỡ chả may cú pháp thay đổi. Cách tiếp cận mới. Sưa cũng bèo bèo 50 chỗ =))

    Sent from Rodgers Zone!!!

    0

  • Angel

    @Nguyen-Hien vâng thì em đang nghĩ vậy nên mới thắc mắc đấy ạ. Nhưng k biết implement cái đó thế nào, a có tài liệu nào về phần này hay có thể chỉ rõ cho e được k ạ. E cảm ơn ạ :))



  • @Nos-Gnoh
    Ý tưởng ở đây mình sẽ dùng 1 pool để chưa connection tới MongoDB. Nó sẽ làm nhiệm vụ quản lý dùm mình. Mình chỉ cần thực hiện các lệnh như insert, find, update...
    Mình asume là bạn dùng: https://github.com/mongodb/node-mongodb-native
    Ý tưởng của mình thì lấy từ bài viết này: https://www.compose.com/articles/connection-pooling-with-mongodb/

    Code chính

    // This is a global variable we'll use for handing the MongoDB client
    var mongodb;
    
    // Connection URL
    var url = '[connectionString]';
    
    // Create the database connection
    MongoClient.connect(url, {  
      poolSize: 10
      // other options can go here
    },function(err, db) {
        assert.equal(null, err);
        mongodb=db;
        }
    );
    
    global.mongodb = mongodb
    

    Ở 1 file khác thì dùng sẽ là

    const mongodb = global.mongodb
    // Use the connect method to connect to the server when the page is requested
    app.get('/', function(request, response) {  
        mongodb.listCollections({}).toArray(function(err, collections) {
            assert.equal(null, err);
            collections.forEach(function(collection) {
                console.log(collection);
            });
        })
        response.send('See console for a list of available collections');
    });
    

    Sent from Rodgers Zone!!!

    2

  • Angel

    @Nguyen-Hien okay thank a ạ, để e nghiên cứu thử



  • @Nos-Gnoh Yup. Thử đi bạn. Nói chung nên dùng pool để manage connection. Do tương lại nếu có cluster thì mình luôn kiểm soát đc lượng connect đến DB mà tính toán cluster.

    Sent from Rodgers Zone!!!

    0


  • @Nos-Gnoh Bạn có thể cho mình xin email mình hỏi bạn chút được không


Log in to reply