2015-07-01 2 views
0

Я ищу, чтобы отделить мои запросы mongo db в отдельный файл js, чтобы помочь повторно использовать код, что-то в следующем формате (это не работает). Любые идеи, как я мог это сделать?узел, отделяющий запросы mongo

queries.js

var Merchants = require('../models/Merchants'); 

var query = { 
    returnMerchantIDs: function() { 
     var results = Merchants.find(function(err, merchants){ 
      if (err) return console.error(err); 
      return merchants; 
      }) 
     return results; 
} 

module.exports = query; 

routes.js

var queries = require('../config/queries'); 

    app.get('/queries', function (req, res) { 
    res.send(queries.returnMerchantIDs()); 
    }); 

ответ

1

Ваше 'возвращение продавцов' на самом деле возвращения из обратного вызова, а не от функции returnMerchantIDs. Вот почему это не работает. Есть два способа сделать это.

Есть returnMerchantIDs принять обратный вызов, как так

var query = { 
    returnMerchantIDs: function (callback) { 
     var results = Merchants.find(function(err, merchants){ 
      if (err) return console.error(err); 
      callback(merchants); 
      }) 
     return results; 
} 

и это, как вы назвали бы это

app.get('/queries', function (req, res) { 
    queries.returnMerchantIDs(function(merchants) { 
     res.send(merchants); 
    })); 
}); 

или вернуть обещание от мангуста к вызывающему и Exec там прохождения обратного вызова

var query = { 
    returnMerchantIDs: function() { 
     var results = Merchants.find(); 
     return results; 
    } 
} 

app.get('/queries', function (req, res) { 
    queries.returnMerchantIDs().exec(function(err, merchants)) { 
     if (err) res.send(err) else res.send(merchants); 
} 
Смежные вопросы