Данные из Монго в Gulp с использованием данных Gulp

Как я могу получить данные от моего Mongo База данных для передачи в Gulp в качестве источника данных при использовании Gulp Data?

Gulp Task (упрощенно)

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

Когда я использую базу данных прототипа, я могу запустить,

> db.heroes.findOne()

И получить этот результат:

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

1 ответ

Решение

Вы можете изменить строку cb(undefined, db.collection('heroes').findOne()); нравится тот, что ниже,

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

ИЛИ как ниже как короткая рука,

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

Таким образом, ваша упрощенная задача Gulp становится,

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))}));
     });
Другие вопросы по тегам