2016-12-18 21 views
7

Jak mogę pobrać dane z bazy danych do mojego Mongo rury w Gulp jako źródła danych przy użyciu haustem dane?Dane z Mongo w Gulp wykorzystujące haustem danych

Gulp Zadanie (uproszczone)

gulp.task('db-test', function() { 
    return gulp.src('./examples/test3.html') 
     .pipe(data(function(file, cb) { 
      MongoClient.connect('mongodb://127.0.0.1:27017/prototype', function(err, db) { 
       if(err) return cb(err); 
       cb(undefined, db.collection('heroes').findOne()); // <--This doesn't work. 
      }); 
     })) 
     //.pipe(data({"title":"this works"})) -> This does work 
     .pipe(through.obj(function(file,enc,cb){console.log('file.data:'+JSON.stringify(file.data,null,2))})); 
    }); 

Kiedy używam bazy prototypowy, mogę biegać,

> db.heroes.findOne() 

I uzyskać ten wynik:

{ 
    "_id" : ObjectId("581f9a71a829f911264ecba4"), 
    "title" : "This is the best product!" 
} 

Odpowiedz

5

można zmienić linię cb(undefined, db.collection('heroes').findOne()); lubić jednego jak poniżej,

db.collection('heroes').findOne(function(err, item) { 
    cb(undefined, item); 
}); 

lub jako poniżej jako krótki strony,

db.collection('heroes').findOne(cb); 

więc uproszczone powyżej zadania łykiem staje

gulp.task('db-test', function() { 
    return gulp.src('./examples/test3.html') 
     .pipe(data(function(file, cb) { 
      MongoClient.connect('mongodb://127.0.0.1:27017/prototype', function(err, db) { 
       if(err) return cb(err); 
       db.collection('heroes').findOne(cb); 
      }); 
     })) 
     //.pipe(data({"title":"this works"})) -> This does work 
     .pipe(through.obj(function(file,enc,cb){console.log('file.data:'+JSON.stringify(file.data,null,2))})); 
    });