简体   繁体   中英

mogodb and javascript - save all results of find() mongodb in array or in object

I want to save all results of find() mongodb in array:

enter code here
enter code here
var dbOpen = dbHandle.open( function () {
    var resultRead = readObj();
    console.log('resultRead: ', resultRead);

});
var readObj = function ( obj_type, callback ) {
var arr;
if (callback)
    return;
dbHandle.collection('users', function(err, collect){
    collect.find({name: "Tom"}, {_id:0 }).toArray(function (err, result){
        if(err){
            console.log('ERROR:',err);
        } 
        else{
            console.log('result:', result);


            arr = result[0];
            console.log('arr: ', arr) ; 
            return arr;
            callback( result );


            }
        });

     });

   }

But resultRead: undefined. How can save all results of find() mongodb in array or object? Please, help me

You need to understand that mongodb api is async. When you call readObj, it will not return anything immediately. Hence you get undefined.

To solve this you can register a callback to readObj function. Something like:

var dbOpen = dbHandle.open( function () {
    var resultRead = readObj(function(resultRead){
        console.log('resultRead: ', resultRead);
    });
});

var readObj = function ( obj_type, callback ) {
    var arr;
    if (!callback) return;
    dbHandle.collection('users', function(err, collect){
        collect.find({name: "Tom"}, {_id:0 }).toArray(function (err, result){
            if(err){
                console.log('ERROR:',err);
            } else {
              console.log('result:', result);
              arr = result[0];
              console.log('arr: ', arr) ; 
              return callback( arr );
            }
        });
     });
 }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM