2016-12-18 2 views
7

Wie kann ich Daten aus meiner Mongo Datenbank erhalten, um in Gulp als Datenquelle bei der Verwendung von Gulp Data zu pipen?Daten von Mongo in Gulp mit Gulp-Daten

Gulp Aufgabe

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

Wenn ich die Prototyp-Datenbank verwende, kann ich laufen

> db.heroes.findOne() 

Und dieses Ergebnis:

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

Antwort

5

Sie können die Linie ändern cb(undefined, db.collection('heroes').findOne()); die man gerne als unten,

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

OR wie unten als kurze Hand,

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

Ihr So oben Gulp Aufgabe vereinfacht wird,

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