MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Gọi lại Node.js với bản cập nhật MongoDB không bao giờ trả về mặc dù nó cập nhật DB

Tôi nghĩ rằng bạn hiểu sai cách async.series hoạt động.

Các chức năng của bạn trong async.series không nhận callback như một lập luận và họ không gọi nó. Và request(...) đó công cụ có lẽ không phải là một chức năng nào cả. Đó có thể là lý do tại sao nó phá vỡ vòng lặp không đồng bộ. Hãy thử điều này:

async.series(
    [
        function(callback) { // <--- missing callback
            log('starting');
            db.connect('mongodb://127.0.0.1:27017/test',
                function(err, base){
                    if(err) throw err;
                    db = base;
                    callback(); // <--- missing callback
                });
        },
        function(callback) { // <--- missing function with callback
            request(website, function(err,resp,body) {
                start(err, resp, body, callback);
            })
        }
    ],
    function(){
        log('closing DB');
        db.close();
    }
);

Lưu ý rằng tôi đã thêm callback đối số khi gọi start . Do đó, bạn sẽ phải cấu trúc lại mã của mình một cách linh hoạt để mọi hàm đều chấp nhận callback có thể được gọi là cuối cùng khi bạn biết rằng tất cả các công việc đã hoàn thành. Ví dụ:bạn có thể thêm async.parallel bên trong start và chức năng này có thể trông giống như sau:

function start(err, resp, body, callback) {
    // some stuff happens here
    var jobs = []
    pageURLS.forEach(function(url, index, array){
        jobs.push(function(clb) {
            request(url, function(error,response,bodies) {
                // some stuff
                clb(); // <--- this refers to the local callback for the job
            });
        });
    });
    async.parallel(jobs, function() {
        // all jobs are done, let's finilize everything
        callback();
    });
};



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để đặt các tùy chọn tuần tự hóa cho các giá trị địa lý bằng cách sử dụng trình điều khiển 10gen C # chính thức?

  2. Cảnh báo khởi động máy chủ Mongo DB

  3. Node js / MongoDB mảng thiết lập bản sao trong javascript

  4. Có thể nhận được kết quả duy nhất trong tổng hợp không?

  5. MongoDB - Mối quan hệ nhiều-nhiều?