sql >> データベース >  >> NoSQL >> MongoDB

MongoDBを更新したNode.jsコールバックは、DBを更新しても返されません

    async.seriesがどのように誤解されていると思いますか 動作します。

    async.seriesの関数 callbackを受け取らないでください 議論として、彼らはそれを呼びません。そして、そのrequest(...) ものはおそらくまったく機能ではありません。それがおそらく非同期ループを壊す理由です。これを試してください:

    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();
        }
    );
    

    callbackを追加したことに注意してください startを呼び出すときの引数 。したがって、すべての関数がcallbackを受け入れるように、コードを大幅にリファクタリングする必要があります。 これは、すべてのジョブが完了したことがわかったときに最後に呼び出すことができます。たとえば、async.parallelを追加できます start内 この関数は次のようになります:

    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. $ nearには、geojsonポイントが与えられた場合、geojsonポイントが必要です

    2. MongoDBで特定のフィールド値を持つドキュメントを含まない配列を持つドキュメントを検索する

    3. mongodbでのサブドキュメントのN-N関係の編集

    4. mongodbでの編集は私にはわかりにくいようです